[Музички] Даг LLOYD: Во нашите видеа на теми веб развој, ние го спомена концептот на база на податоци за неколку пати, нели? База на податоци, така си веројатно запознаени со од велат дека со Microsoft Excel или Google Spreadsheets. Тоа е навистина само една организирана сет на маси, редови и колони. И базата на податоци е местото каде што нашата веб продавници информации кои се важни за нашата веб страница за да работи правилно. Повторно, многу чест пример тука е чување на корисничко име и лозинка во базата на податоци, така што кога корисникот се најавува на нашата веб-страница, базата на податоци може да биде достапен за да ја видите ако постои тој корисник во базата на податоци. И ако тие се, проверете дали лозинката е точна. И ако нивните лозинката е точна, тогаш можеме да им даде што и да страница тие се бара. Па ти си најверојатно, повторно, познати со оваа идеја од Excel или Google Табеларни пресметки. Имаме бази на податоци, маси, редови и колони. И тоа е навистина вид од основните сет на хиерархиски дефект тука. Па еве табела Excel. И ако некогаш сте се отвори ова или друга слична програма знаете дека овие тука се rows-- 1, 2, 3, 4, 5, 6, 7. Овие се колони. Можеби долу тука, иако може да се Не користите оваа функција ужасно much-- Јас ќе зумирате in-- имаме оваа идеја од листот. Па можеби и овие листови, ако Се менува и назад, се различни табели кои постои во мојата база на податоци. И ако продолжиме со примерот на сите Патем, името на оваа база на податоци е Книга 1. Можеби имам и книга 2 Книга 3. Така што секоја датотека Excel е база на податоци, секој лист е на маса, и во внатрешноста на секоја маса имам оваа идеја на редови и колони. Па како можам да работам со оваа база на податоци? Како можам да добијам информации од него? Па има јазик наречен SQL-- кој обично само повик Sequel-- и таа се залага за Структурно јазик за пребарување. И тоа е програмски јазик, но тоа е прилично ограничена програмирање јазик. Тоа не е доста како и другите кои ги имам работено со. Но, целта на овој програмски јазик е да се пребарува базата на податоци, за да се побара информации од базата на податоци, најдете информации во база на податоци, и така натаму. Ние, исто така, во CS50-- и тоа е многу заедничка платформа, се вика MySQL. Тоа е она што ние ги користиме во текот. Тоа е софтвер со отворен код платформа која воспоставува т.н. релациона database-- база на податоци, ефективно. Ние не треба да се добие во премногу детали на она што е релациона база на податоци. Но јазикот SQL е многу вешти во кои работат со MySQL и други слични стилови на релациони бази на податоци. И многу инсталации на MySQL, доаѓаат со нешто наречен phpMyAdmin, која е графички кориснички interface-- на GUI-- дека го прави малку повеќе лесен за да се изврши база на податоци пребарувања, бази на податоци, бидејќи не се користат само со напредни програмери, нели? Понекогаш постојат овие мали бизниси, и тие не можат да си дозволат да ангажира тим од програмери, но тие се уште треба да ги чувате информации во базата на податоци. Нешто како phpMyAdmin го прави многу лесно за некој кој никогаш не е програмиран пред да ги собереш и да се запознаат со тоа како за работа со бази на податоци. Проблемот е, phpMyAdmin, додека тоа е фантастична алатка за учење за бази на податоци, тоа е прирачник. Ви се случува да треба да се логирате во тоа и извршување на команди и тип работи во рачно. И како што знаеме од нашето пример на PHP веб програмирање, мора да се направи рачно работите на нашата веб страница, ако сакаме динамична, активни одзив сајт, можеби не е најдобар пристап. Ние би сакале да се најде начин да можеби автоматизира овој некако. И SQL ќе ни овозможи да го направите тоа. Значи, кога ќе си оди за да почне да работи со SQL, ние прво треба да се имаат база на податоци за работа со. Креирање на база на податоци вие веројатно нешто ќе го направи во phpMyAdmin, бидејќи вие само ќе треба да го прават тоа еднаш, и синтакса за тоа е многу повеќе јасна. Тоа е многу полесно да го направи тоа во графички кориснички интерфејс отколку што пишување надвор како наредба. Командата може да се добие малку незгодни. Слично на тоа, создавајќи табела може се доста тежок, како и. И така работи како создавање база на податоци и создавање на маса, која сте веројатно само ќе направи once-- еднаш по маса, еднаш во database-- тоа е во ред да се направи тоа во графички интерфејс. Во процесот на создавање на маса, ќе исто така, мора да наведете сите на колоните кои ќе бидат во таа табела. Каков вид на информации што го направи сакате да го зачувате на табелата? Можеби корисничкото име и датум на раѓање, лозинка, корисничко ID број, а можеби градот и државата, нели? И за секој пат кога ние сакаме да додадете корисник на базата на податоци, ние сакаме да ги добиете сите шест на оние делови од информации. И тоа го правиме со додавање редови на масата. Па ние прво да се создаде база на податоци, тогаш ние се создаде маса. Како дел од создавањето маса, ние се бара да се определи секоја колона дека ние би сакале во оваа табела. И тогаш ќе почнеме да се додаде информации во базата на податоци и пребарување базата на податоци повеќе generally-- не само додавање, но се друго ние do-- ќе бидеме занимаваат со редови на маса, која е една информации на корисници од целиот сет. Така што секој SQL колона е способен за одржување на податоци на одреден тип на податоци. Па ние вид на елиминиран овој Идејата на типови на податоци во PHP, но тие се врати тука во SQL. И има многу типови на податоци. Еве само 20 од нив, но тоа не е дури и сите од нив. Па ние имаме идеи како INTs-- Integers-- ние веројатно знаете дека оваа колона може да се одржи цели броеви. И постојат варијации thereon-- Smallint, TINYINT, MEDIUMINT, BIGINT. Можеби ние не секогаш се потребни четири каса. Можеби и ние треба осум бајти, и така ние да ги користите овие варијации на цели броеви да се биде малку повеќе простор ефикасен. Ние можеме да правиме децимални броеви, ние може да го направи со подвижна запирка броеви. Овие се прилично слични. Постојат некои разлики, и ако би сакал да се погледне до SQL вид на водич, може да се види она што на мало разлики меѓу нив. Можеби сакаме да ги чувате информации во врска со датум и време. Можеби ние сме следење на кога корисникот ќе се приклучи на нашата веб страница, и така можеби сакаме да има колона која е време датум или уверение дека покажува кога корисникот всушност регистрираш. Ние можеме да правиме геометрии и linestrings. Ова е всушност прилично кул. Ние би можеле да планирам со географска област користење ГИС координати да заговор излезе на површина. Па, всушност, може да се сместат тој вид на информации во SQL колона. Текстот е само гигант грутки на текст, можеби. ENUMs се вид на интересни. Тие навистина постојат во C. Ние не се зборува за нив, бидејќи тие не се ужасно вообичаено се користат, барем CS50. Но, тоа е набројани тип на податоци, која е способен за одржување ограничени вредности. А навистина добар пример за тоа би било да се создаде enum каде седум можни вредности се недела, понеделник, Вторник, среда, четврток, петок, Сабота, нели? Кој тип на податок ден на Недела не постои, но би можеле да се создаде набројани тип на податоци како дека таа колона може само некогаш се одржи еден од оние седум можни вредности. Ние сме попишани сите од можните вредности. Тогаш имаме знак и VARCHAR, и јас сум во боја овие зелени затоа што сме, всушност, случува да се земе втора да се зборува за разликата помеѓу овие две нешта. Па char, за разлика од C каде CHAR беше еден лик, во SQL знак се однесува на фиксна должина на стрингот. И кога ќе се создаде овој колона, ние, всушност, може да се определи должината на стрингот. Така што во овој пример, би можеле да речеме CHAR (10). Тоа значи дека секој елемент на таа колона ќе се состои од 10 бајти на информации. Ни повеќе ни помалку. Значи, ако ние се обидуваме да ги ставите во 15 малку или елемент 15 карактер или вредноста во оваа колумна, ние сме само се добие првите 10. Ако се стави во две карактер долго вредност, ние ќе треба да имаат два знаци, а потоа осум null каса. Ние никогаш нема да бидат поефикасни од тоа. А VARCHAR е вид на како нашиот поим за низа дека ние сме запознаени со од C или од PHP. Тоа е стринг променлива должина. И кога ќе се создаде оваа колумна, само одредите максималниот можен должини. Па можеби и 99, или најчесто 255. Што ќе биде максималната должина. И така да сме биле чување 15 карактер стринг, ние ќе го користи 15 бајти, можеби 16 бајти за ништовни терминатор. Ако бевме складирање на три карактер стринг, ние ќе го користи три или четири бајти. Но ние нема да го користите целиот 99. Па зошто некој би ги имаме и двете? Па, ако ние треба да дознаам како додека нешто не е со VARCHAR, ние треба да се вид на iterate низ неа, како што направивме во C и дознаам каде не застане. Со оглед на тоа ако се знае дека сè во оваа колумна е 10 бајти, можеби ние знаеме дека информации, ние може да скокаат 10 бајти, 10 бајти, 10 бајти, 10 бајти, и секогаш го најде почетокот на стрингот. Па ние може да има некои потроши простор со char, но можеби има трговска исклучување на се има подобра брзина во навигацијата низ базата на податоци. Но можеби сакаме флексибилност на VARCHAR наместо having-- Ако нашите CHAR беше 255, но повеќето од нашите корисници беа само со внесување на три или четири бајти во вредност од информации или три или четири ликови во вредност од информации. Но некои корисници беа користење целата 255, можеби VARCHAR посоодветно би било таму. Тоа е вид на пласирам, и главно за потребите на CS50, вие не треба да се грижи премногу за без разлика дали имате потреба при користење на знак или VARCHAR. Но, во реалниот свет, овие работи не е важно, бидејќи сите овие колони ги преземат вистински физички простор. И физичкиот простор, во реалниот свет, доаѓа на премија. Па еден друг надоместок кога ќе градиме маса е да се избере една колона за да биде она што се нарекува примарен клуч. И примарен клуч е колона каде што секој вредноста не е единствен. А тоа значи дека можете лесно одберам еден ред само со гледање на примарниот клуч на тој ред. Така на пример, може генерално, со корисници, не сакаат двајца корисници кои имаат ист кориснички ID број. И така можеби имаш многу информации, а можеби и два корисниците можат ги имаат истите name-- имаш Џон Смит и Џон Смит. Тоа не е секогаш проблем, бидејќи повеќе луѓе во светот по име Џон Смит. Но само матичен број еден корисник 10, еден кориснички ID број 11, 12, 13. Ние немаме два корисници со истиот број, па можеби и кориснички ID броеви ќе биде добра примарен клуч. Ние немаме било дуплирање, а ние сега можат уникатно идентификуваат секој ред само со разгледување на таа колона. Избор примарни клучеви, всушност може да направат натамошни работи за маса многу полесно, бидејќи можете да потпора на фактот дека одредени редови ќе да биде уникатен, или одредена колона Вашата база на податоци или на маса ќе биде уникатен за да изберете на определени редови. Можете исто така да имаат заедничка примарна клуч, кој можете да го најдете повод да се користи, што е само еден комбинација на две колони, кои е загарантирана да биде уникатен. Па можеби имате еден колона дека како и БС, една колона тоа е еден, два, и три, но ќе ги само некогаш имаат еден А1, еден А2, и така натаму и така натаму. Но може да имаат Б2, а C2, или A1, A2, A3, A4. За да можете да имате повеќе Како, повеќе БС, повеќе од нив, повеќе twos, но вие може само некогаш имаат еден А1, В2, В3, и така натаму. Значи како што реков, SQL е програмски јазик, но тоа има доста ограничен вокабулар. Тоа не е толку експанзивна како Ц и PHP и други јазици кои ние зборуваме во курсот. Тоа е повеќе на опширниот јазик отколку она што ние сме ќе зборуваме за тоа во овој видео, затоа што во овој видео ние ќе треба да се зборува за четири операции кои ги може да се изврши на маса. Постојат повеќе од ова. Можеме да направиме повеќе од тоа, но за нашите цели, ние сме генерално ќе биде со користење само четири операции-вметнете, изберете, ажурирање и бришење. А вие веројатно може да се погоди интуитивно она што сите овие елементи се направи. Но, ние ќе одиме во малку на детали за секој од нив. Така и за целите на оваа видео, да претпоставиме Ги имаме следниве две табели во единствена база на податоци. Имаме маса наречена Корисниците што има четири columns-- матичен број, корисничко име, лозинка и полно име. И ние имаме втора табелата во истата база на податоци наречен мајки кои едноставно продавници информации за корисничко име и мајка. Значи за сите примери Во ова видео, ние ќе биде со користење на оваа база на податоци и следните ажурирања на него. Па да речеме ние сакаме да додадете информации на табелата. Тоа е она што на операцијата вметнете го прави тоа. Во објаснувањето на сите овие команди, јас ќе одам да ви даде општа скелет за користење. Затоа што во основа, пребарувања ќе изгледаат прилично слични, ние сме само ќе треба да се менува малку различни парчиња на информации да направите различни нешта со масата. Значи за Insert, скелетот изгледа слично на ова. Ние сакаме да се вметне во одредена маса. Тогаш имаме отворена заграда како и листа на колони дека ние сакаме да се стави во вредности. Затвори загради, следните вредности, а потоа еднаш, ќе се листа од вредностите ние сакаме да се стави на маса. Така пример за ова ќе биде следниот. Сакам да се вметне во табелата корисници на следниве columns-- корисничко име, лозинка и fullname. Па нов ред во која јас сум ставање во тие три колони и ние сме случува да се стави во вредностите Њуман, USMAIL и Њуман. Значи во овој случај, јас сум ставање на мали Newman во колона корисничко име, лозинка USMAIL и целосното име капитал N Њумен во колона fullname. Значи тука е она на базата на податоци изгледаше како порано. Тука е она што корисниците табела на Топ изгледала пред да го направи ова. Откако ќе се изврши оваа барањето, ќе го добиеме ова. Додадовме нов ред во табелата. Но, забележуваат тоа една работа дека јас не прецизираше, но некако имам вредност за што е ова 12-во право тука. Јас не реков дека јас сакав да стави матичен број во таму. Сакав да се стави корисничко име, лозинка, fullname. И го сторив тоа, тоа е во ред. Но, јас, исто така, доби оваа 12. Зошто да се добие оваа 12? Па, излегува дека кога ќе се дефинираат колона кој ќе биде вашиот примарен клуч, што е обично, како што реков, идентификациски број. Тоа не е секогаш нужно ќе биде идентификациски број, но тоа е обично е добра идеја да се биде некој вид на целобројна вредност. Имате опција во phpMyAdmin кога сте создавање на вашата база на податоци или вашата маса за да го поставите тој колона на пример автоматски ја зголемува. Што е навистина добра идеја кога си работат со примарен клуч, затоа што сакаш секој вредност во таа колона да биде уникатна. И ако сте заборавиле да го одредите тоа за повеќе од едно лице, сега го имате ситуација каде таа колона веќе не е единствена. Имате две празни места, па да не можат да веќе уникатно го идентификуваат column-- или ако повеќе не уникатно може идентификуваат ред врз основа на таа колона. Тоа е изгубена сите свои вредност како примарен клуч. И така очигледно она што го сторив тука е конфигуриран ID на корисникот колона за автоматско зголемување, така што секој време го додадете информации на маса, тој автоматски ќе ми дадеш вредност за примарниот клуч. Па јас никогаш не може да го заборави да го направи тоа, бидејќи базата на податоци ќе го направи тоа за мене. Значи, тоа е вид на убаво. И така тоа е причината зошто ние се 12 во таму, бидејќи јас сум постави таа колона до авто прираст. Кога би додала некој друг тоа би било 13, кога би додала некој друг тоа би било 14, и така натаму. Па да се направи уште еден вметнување. Ние ќе се вметне во табелата за мајки, во Поточно, на корисничко име и мајка колона, вредностите Крамер и Бабс Крамер. И така го имавме тоа порано. Откако ќе се изврши на тој SQL пребарување, имаме ова. Додадовме Крамер и Бабс Крамер табелата за мајки. Значи тоа е вметнување. ИЗБЕРЕТЕ е она што ние ги користиме за да се извлече информации од табелата. Значи ова е како да се добие информации од базата на податоци. И така да изберете команди се случува да бидат многу често се користат во програмирање. Општата framework-- на општи скелет изгледа вака. Изберете множество на колоните од маса, а потоа евентуално можете да наведете еден или condition-- Она што ние обично го нарекуваме прирокот, обично е термин што го користиме во SQL. Но, тоа е во основа она што Особено редови сакате да добиете. Ако сакате да се, наместо на добивање сè, тесни тоа долу, ова е местото каде што ќе го направи тоа. А потоа Евентуално, може, исто така, нарачате на одредена колона. Па можеби ќе сакате да се работи подредени по азбучен ред врз основа на една колона или по азбучен ред врз основа на друг. Повторно, каде и Подреди по се опционални. Но, тие, најверојатно, ќе биде useful-- особено Каде ќе биде корисно да се стесните така да не добиеш целата база на податоци назад и мора да го обработи, можеш само да парчиња од тоа што ти е гајле за тоа. Така на пример, јас можеби ќе сакате да го изберете ID број и fullname од корисниците. Значи она што би можело тоа да изгледа? Значи тука е мојата маса корисници. Сакам да изберете idnum и fullname од корисниците. Што сум јас ќе добијам? Одам да го добивате ова. Јас не го стесните, па јас сум добивање матичен број за секој ред и јас сум добивање на целосна име од секој ред. ВО РЕД. Што ако сакам да изберете лозинка од корисниците WHERE-- па сега Јас сум додавајќи состојба, односно predicate-- каде што idnum е помал од 12. Значи тука е мојата база на податоци, повторно, мојата маса корисници врвот. Што сум јас ќе добијам ако сакате да го изберете таа информација, лозинка, каде корисничко име или idnum е помал од 12? Одам да се добие оваа информации назад, нели? Тоа се случува дека idnum е 10, што е помалку од 12, матичен број 11 помалку од 12. Јас сум добивање на лозинката за оние редови. Тоа е она што побара. Што со тоа? Што ако сакам да го изберете ѕвезда од мајки масата каде корисничко име е еднакво Џери? OK, одберете ѕвезда е специјална вид на вајлд карта т.н. кои се користат да се добие сè. Па тие кажуваат одберете Корисничко име запирка мајка, која се случи да биде само две колони на оваа табела, Јас само може да изберете ѕвезда и да добијат се што каде корисничко име е еднаква на Џери. И така тоа е она што јас ќе ја добие ако сум направил тоа конкретно прашање. Сега, бази на податоци се одлично, бидејќи тие ви дозволуваат ни да ги организира информациите можеби малку поефикасно отколку ние инаку би можеле да. Ние не мора да ги чувате секој значаен дел од информациите за корисник на иста маса. Имавме две маси таму. Ние треба да ги чувате име на мајката на сите, а можеби и ние немаме за социјално осигурување број, имаме датум на раѓање. Кои не секогаш треба за да биде во иста маса. Колку што ние може да се дефинира односи меѓу tables-- и тоа е каде што релациона Терминот доаѓа вид на база на податоци во play-- колку што можеме да го дефинираме односи меѓу маси, можеме да се вид на compartmentalize или апстрактни нешта на некој начин, каде што имаме само на навистина важни информации ние се грижиме за на маса на корисникот. И тогаш имаме дополнителни информации или дополнителни информации во другите маси дека ние може да се поврзе назад на главната маса на корисниците на одреден начин. Значи тука имаме овие две табели, но има врска помеѓу нив, нели? Се чини како корисничко име може да биде нешто која постои заедничко помеѓу овие две различни маси. Па што ако ние сега имаме ситуација каде што сакате да се добие целосното име на корисникот од маса на корисникот, и нивната мајка именува од трпезата на мајката? Ние немаме начин да се добие кои, како што стои, нели? Не постои една табела која содржи и со полно име и презиме на мајка. Немаме таа опција од она што сум го видел досега. И така што мораме да се воведе идејата за да се придружи. И се приклучува веројатно најмногу complex-- тоа е навистина повеќето сложена операција ние ќе треба да се зборува за во видеото. Тие се малку комплицирано, но откако ќе го добиете висат од него, тие, всушност, не се толку лош. Тоа е само посебен случај на одбереш. Ние ќе треба да изберете множество на колони од табелата се приклучи во втората табела на некои предикат. Во овој случај, се размислува за тоа како this-- маса еден е еден круг овде, табела две е уште еден круг овде. И основните казниви дел во средината, тоа е вид на како ако мислите за како Венов дијаграм, она што тие имаат заедничко? Ние сакаме да ги поврзат овие две табели врз основа на она што им е заедничко и да се создаде овој хипотетички маса тоа е спојувањето на двете заедно. Па ќе видиме ова во пример а можеби и тоа ќе ви помогнеме тоа се расчисти малку. Па можеби ќе сакате да го изберете user.fullname и moms.mother од корисниците се приклучи во маса мајки во секоја ситуација каде колоната корисничко име е иста помеѓу нив. И ова е нова синтакса за овде, на овој корисник. и мајки .. Ако јас го правам повеќе табели заедно, јас може да се определи масата. Јас може да се направи разлика, особено на дека на на самото дно таму. Јас може да се направи разлика на корисничко име колона од табелата на корисници од колона име на мајки маса, која се otherwise-- ако ние само рече корисничко име е еднаква на корисничко име, што воопшто не значи ништо. Ние сакаме да го направи тоа, каде што тие се совпаѓаат. За да можам да се определи на маса и на името на колоната во случај на ситуација каде што ќе биде јасно она што јас го зборувам. Значи тоа е сите што го правам не постои сигурен сум велејќи дека оваа колумна од оваа табела, и да се биде многу експлицитен. Значи, повторно, јас сум со избирање на целосно име и презиме и име на мајката од корисниците табела поврзани заедно со табелата за мајки во секоја ситуација каде што тие го споделат тоа column-- тие го споделат тоа корисничко име поим. Значи тука се маси имавме порано. Ова е состојбата на нашата база на податоци како што постои во моментов. Информации ние сме вадење ова е да се започне со. Ова е новиот табелата ние си оди да се создаде комбинирање на овие заедно. И ќе забележите дека ние не сме истакнување Ред Њуман во табелата на корисникот, и ние не сме истакнување Ред Крамер во табелата на мајки бидејќи ниту една постои во двете sets-- во двете табели. Единствените информации што е заедничко меѓу нив е Џери е во двете табели и gcostanza е и во двете табели. И така, кога ние го ПРИДРУЖЕТЕ SQL, она што ние get-- и да правиме, всушност, го добивате ова. Тоа е вид на привремена променлива. Тоа е како хипотетички Спојувањето на двете маси. Ние всушност се добие нешто како овој, каде што ние сме споени заедно во табелите на информации дека тие имаат заедничко. Така забележуваме дека users.username и moms.username колона, тоа е сосема ист. Тоа беше информацијата дека беше во согласност од корисниците маса и маса на мајки. И така ние ги спои заедно. Ние отфрлените Крамер, бидејќи тој не постои во табелата на корисници, и ние отфрлените Њуман, бидејќи тој не постои во табелата за мајки. Значи ова е хипотетичко спојување користејќи го ПРИДРУЖЕТЕ операција на SELECT. А потоа ние го барате целосно име и презиме на корисникот и мајка на корисникот, па така ова е информацијата дека ние ќе ја добие од целокупната пребарување што го направивме со SELECT. Значи ние се приклучи на масите и ние извлечена овие две колони, и така тоа е она што ние ќе ја добие. Но SQL се придружува еден вид на комплицирани. Вие веројатно нема да ги прават премногу, но само имаат некоја идеја на скелетот дека можете да го користите да се спојат две табели заедно ако е потребно да. Последните две се малку поедноставно ветувам. Па ажурирање, можеме да користиме Ажурирање за промена на информации во табела. На општ формат е да ажурирање некој маса, го поставите на некои колоната за некои вредност Каде што некои прирокот е задоволен. Така на пример, ние можеби ќе сакате да се ажурира корисниците табела и да го поставите лозинка за да ала ала, каде ID број е 10. Значи во овој случај, ние сме ажурирање на корисниците табела. Бројот проект е 10 за дека првиот ред таму, и ние сакаме да ги ажурирате лозинка на ала-чевли. И така тоа е она што ќе се случи. Тоа е прилично јасна, така? Тоа е само еден многу едноставен модификација на масата. DELETE е работата што се користи за да се отстрани информации од табелата. Избриши од табелата, каде што некои прирокот е задоволен. Ние сакаме да ги избришете од маса на корисниците на пример каде корисничко име е Њуман. Што веројатно може да се погоди она што се случува да се се случи тука откако ќе се изврши дека SQL Барањето, Њуман е нема од табелата. Така што сите овие операции, како што рековме, се многу лесно да се направи во phpMyAdmin. Тоа е многу лесен за користење интерфејс. Но, тоа бара рачно напор. Ние не сакаме да се вработат рачен напор. Ние сакаме нашите програми за да се стори тоа за нас, нели? Значи, ние можеби ќе сакате да се направи овој програмски. Сакаме да ги инкорпорираме SQL и да имаат нешто друго да го стори тоа за нас. Но, она што не сме виделе кој им овозможува на ни да програмски направи нешто? Видовме PHP, нели? Се воведува некои динамика во нашите програми. И така за среќа, SQL и PHP да игра многу убаво заедно. Има функција во PHP повика на прашањето, кој може да се користи. И можете да го помине како параметар или аргументот за пребарување на пребарување SQL дека вие би сакале да се изврши. И PHP ќе го направиме тоа во ваше име. Значи, откако сте поврзани до вашата база на податоци со PHP, има две прелиминарни избори ќе го направите ова. Има нешто што се нарекува MySQLi и нешто што се нарекува ЗНП. Ние нема да одиме во огромен износот детали таму. Во CS50 ние ги користиме ЗНП. По кој сте поврзани на вашата база на податоци, тогаш може да направи вашата база на податоци пребарувања со полагање на пребарувања како аргументи во PHP функции. И кога ќе го направите тоа, ќе ја запази резултати наведени во асоцијативна низа. И знаеме како да се работи со асоцијативни низи во PHP. Па јас може да се каже нешто како this-- $ results-- ова е во PHP-- еднаква пребарување. А потоа и во внатрешноста на функција за пребарување дека аргументот дека јас сум полагање да се пребарува што личи на SQL. И во фактот што е SQL. Тоа е стринг пребарувањето што јас би сакал да се изврши на мојата база на податоци. И така во црвено, ова е PHP. Ова е SQL дека сум интегрирање во PHP, со тоа што тоа аргументот на функцијата за пребарување. Сакам да изберете од fullname корисници, каде што ID број е еднакво на 10. А потоа можеби и откако јас го направиле тоа, Јас може да се каже нешто како ова. Сакам да се печати од Благодарение порака за најавување. И јас тоа го сакаат interpolate-- сакам да интерполирам $ резултати fullname. И така тоа е како јас работам со кои асоцијативна низа што ја добив назад. $ резултати fullname би во основа заврши печатење, Ви благодариме за пријавување, Џери Seinfeld. Тоа беше целосно име каде idnum еднакво на 10. И така сите што го правам е јас сум now-- јас се чуваат мојата пребарување, резултатите од моето пребарување и резултати во асоцијативна низа, и fullname е името на колоната јас бев добивање на. Значи, тоа е мојот клуч во резултатите асоцијативна низа што сакам. Така Ви благодариме за пријавување, $ резултати, fullname ќе се печати, ќе се држи право во помеѓу овие кадрава протези, Џери Seinfeld. А јас ќе се допаѓа да се печати пораката Ви благодариме за најавување Џери Seinfeld. Сега, ние не би требало да е тешко код такви работи во, нели? Ние би сакале да се направи нешто како печатење ѓ, каде што може да ја замени и можеби собираат различни информации, или можеби имаат процес за пребарување различни информации. И така на прашањето, го бараш функција има овој поим на кој вид на супституции многу сличен на печатите ѓ проценти ОК и в проценти, што е знак прашалник. И можеме да го користиме прашање ознаки многу аналогно да се печати ⇩ за замена на променливи. Па можеби вашето корисничко најавени претходно, и сте го зачувале нивниот матичен број на корисникот во $ _SESSION на PHP супер глобална во клучниот проект. Па можеби и откако тие ќе се најавите, ќе се постави $ _SESSION проект изнесува 10, екстраполација од примерот ние само видов пред една секунда. И така, кога ние всушност извршување ова анализирање на резултатите сега, тоа ќе го приклучиш во 10, или што Проект вредноста на $ _SESSION е. И така што ни овозможува да се да биде малку повеќе динамичен. Ние не сме хард кодирање работи во повеќе. Ние сме заштеда на информации некаде и потоа можеме да ги користат тие информации да се повторно вид на генерализира она што ние сакаме да се направи, и само plug-in-и промени однесувањето на нашата страница врз основа на она матичен број на корисникот всушност е откако ќе влезете во системот. Исто така е можно, сепак, со кои се вашите резултати Може да се состои од повеќе редови. Во кој случај, мора да низа на arrays-- низа на асоцијативни низи. А вие само треба да iterate преку неа. И знаеме како да iterate преку низа во PHP, нели? Значи тука е веројатно најголемиот комплекс нешто што сум го видел досега. Тоа всушност се интегрира три јазици заедно. Тука во црвено, ова е некои HTML. Јас сум очигледно starting-- ова е програмка на некои HTML дека имам. Јас сум почнуваат нов став кој вели мајки на Seinfeld телевизорот. А потоа веднаш потоа Јас сум почнуваат маса. А потоа по што, јас имаат некои PHP, нели? Ги имам сите на овој PHP код во таму. Јас сум очигледно ќе направите пребарување. И да се направи за пребарување, јас ќе одам да биде користење изберете мајки од мајки. Па ова е getting-- ова е SQL. Па на сината е SQL. Црвениот видовме пред вториот беше на HTML. И зелените тука е PHP. Па јас сум правење на пребарување во мојата база на податоци, јас сум избирање на сите на мајки во табелата за мајки. Не само да го стеснување одредување на одредени ред, јас барам за сите нив. Јас тогаш проверете дали резултатот е не еднаквите еднакво на лажни. Ова е само мојот начин на проверка на вид на, ако резултатите не е еднаков на нула, дека ние ќе се види в пример. Во суштина ова е само проверка за да се направи сигурни дека тоа всушност доби податоци назад. Затоа што не сакам да започнете со печатење од податоците, ако јас не добивам никакви податоци. Тогаш за секоја резултати како резултат на foreach синтаксата од PHP, сите што го правам е печатење на $ резултат мајки. И така јас ќе одам да добиете сет на сите мајки на each-- тоа е низа на асоцијативниот arrays-- и јас сум со печатење секој од нив како нејзин ред на табела. И тоа е навистина убава колку што има на него. Знам дека е малку малку се случува овде во овој последен пример со низи од arrays-- низи на асоцијативни низи. Но, според него е само вари долу во SQL да се прават на барањето, обично по изборот Ние веќе стави информации во табелата, а потоа само се тргнуваше. И тоа е ќе се повлече во конкретниов случај. Ние би екстракт од сите поединечни мајките од трпезата на мајки. Добивме на цела низа на нив, и ние сакаат да iterate преку и печатење секое. Значи, повторно, ова е веројатно најкомплицираните пример ние сме виделе, бидејќи ние сме мешање на три различни јазици заедно, нели? Повторно, имаме HTML тука во црвено, меша со некои SQL тука во сина, меша со некои PHP во зелена боја. Но, сите овие се игра убаво заедно, тоа е само прашање на развивање добри навики, така што ќе може да се добие нив да работат заедно за начинот на кој сакате. И единствениот начин да се навистина дека е да вежбате, пракса, пракса. Јас сум Даг Лојд, ова е CS50.