>> [За възпроизвеждане на музика]
Дъг LLOYD: В нашите видеоклипове по теми, уеб програмиране,
споменахме понятието база данни на няколко пъти, нали?
Така че една база данни, вие сте вероятно са запознати с от
казват, използвайки Microsoft Excel или Google Spreadsheets.
Това е наистина само една организирана комплект от таблици, редове и колони.
>> И на база данни, където е нашите уебсайт магазини
информация, която е важна за нашия сайт, за да работи правилно.
Отново, една наистина обща пример тук е съхраняване на потребителски имена и пароли
в база данни, така че когато даден потребител влезе в нашия сайт,
на базата данни може да бъде заявен за да видите ако съществува този потребител в базата данни.
И ако те са, че проверката паролата е вярна.
И ако паролата е правилна, тогава можем да ги дам каквото страница
те иска.
>> Значи вие сте вероятно, отново, запознати с тази идея от Excel или Google
Spreadsheets.
Ние имаме бази данни, маси, редове и колони.
И това е наистина сортиране на основния сет
на йерархична разбивка тук.
Така че тук е една електронна таблица Excel.
И ако някога сте се отвори тази или друга подобна програма
вие знаете, че те са тук rows-- 1, 2, 3, 4, 5, 6, 7.
Това са колони.
>> Може би тук, въпреки че може да Не използвайте тази функция ужасно much--
Ще увеличите in-- имаме тази идея на един лист.
Така че може би тези листове, ако Аз се редуват напред и назад,
са различни таблици, които съществуват в моята база данни.
И ако продължим примера всички Между другото, името на тази база данни
е книга 1.
Може би имам Book 2 и 3 Book.
Така че всеки файл 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.
Това всъщност е много готино.
Бихме могли да се набележат по- географска област, използвайки
GIS координати за парцел от дадена област.
Така че всъщност може да се съхранява, че сортиране на информация в SQL колона.
>> ТЕКСТ, е само на гигантски петна от текст, може би.
ENUMs са вид интересни.
Те действително съществуват в C. Ние не правим говорим за тях, защото те не са
ужасно често се използва, най-малко CS50.
Но това е един номерираните тип данни, които е в състояние да задържа ограничени стойности.
>> Един наистина добър пример тук ще бъде да се създаде ENUM когато седмината
възможни стойности са Неделя, Понеделник, Вторник, сряда, четвъртък, петък,
Събота, нали?
Този вид данни Ден на Седмица не съществува,
но можем да създадем изброени тип данни като
че тази колона може само да задържите един от тези седем възможни стойности.
Ние всички изброени от възможните стойности.
>> Тогава ние имаме CHAR и VARCHAR, и аз съм оцветите тези зелено
защото ние сме всъщност ще отнеме секунди
да се говори за разликата между тези две неща.
Така CHAR, за разлика от C, където CHAR е един символ,
в SQL пепел се отнася до фиксирана дължина низ.
И когато ние създаваме това колона, ние всъщност
да определите дължината на низа.
>> Така в този пример, бихме могли да кажем CHAR (10).
Това означава, че всеки елемент от тази колона
ще се състои от 10 байта информация.
Не повече, нито по-малко.
Така че, ако ние се опитваме и се слага в 15 битов или елемент 15 герой
или стойност в тази колона, ние само се първите 10.
Ако сложим в двете характера дълго стойност,
ние ще имаме двама знаци, а след осем нула ухапвания.
Ние никога няма да бъде по-ефективно от това.
>> A VARCHAR е нещо като представата на низ
че сме запознати с от С или от PHP.
Това е низ с променлива дължина.
И когато създавате тази колона, просто
максималните възможни дължини.
Така че може би 99 или 255-често.
Това ще бъде максималната дължина.
И така, ако бяхме съхраняване 15 символен низ,
щяхме да използваме 15 байта, може би 16 байтове за нищожна терминатор.
Ако бяхме прибирате три символен низ,
щяхме да използваме три или четири байта.
Но ние няма да се използва пълният 99.
>> Така че, защо да имаме и двете?
Е, ако ние трябва да разбера как дълго нещо е с VARCHAR,
ние трябва да се вид обхождане на нея точно като направихме в C
и да разбера къде да го спре.
Като има предвид, ако знаем, че всичко в тази колона е 10 байта, може би
ние знаем, че информацията, ние може да скочи 10 байта, 10 байта, 10 байта, 10 байта,
и винаги ще намериш започваща на низа.
>> Така че ние може да има някои губи пространство с CHAR,
но може би има и търговията на разстояние от с по-добра скорост
в навигацията на базата данни.
Но може би искаме гъвкавостта на VARCHAR
вместо having-- Ако нашият CHAR е 255, но повечето от нашите потребители
бяха само въвеждане на три или четири байта струва на информация или трима или четирима
знака на стойност на информация.
>> Но някои потребители са използвали цялата 255, може би
VARCHAR би било по-подходящо място.
Това е нещо като компромис, и общо за цели на CS50,
не е нужно да се притеснявате твърде много за дали използвате CHAR или VARCHAR.
Но в реалния свят, тези неща са от значение, тъй като всички тези колони
отнеме до реалното физическо пространство.
И физическо пространство, в реалния свят, идва с премия.
>> Така че една друга насрещна престация когато сте изграждане на маса
е да изберете една колона, за да бъде което се нарича първичен ключ.
И първичен ключ е колона където всяка една стойност е уникален.
А това означава, че можете лесно да избирам един ред само като се погледне
на първичния ключ на този ред.
Така например, можете като цяло, с потребители,
не искам двама потребители, които имат същото потребителско ID номер.
И така, може би имате много информация,
а може би и двете потребителите могат имат същото name--
имате John Smith и John Smith.
Това не е непременно проблем защото има много хора
в света на име Джон Смит.
Но ние имаме само ID номер едно на потребителя 10, един потребител ID номер 11, 12, 13.
Ние не разполагаме с двама потребители със същия брой,
и така може би потребителското идентификационни номера Би било добра първичен ключ.
>> Ние не разполагаме с дублиране, и сега можем еднозначно
идентифициране на всеки един ред само като погледнете в тази графа.
Изборът първични ключове може действително прави последващи операции трапезни
много по-лесно, защото можете да използвате на факта, че някои редове ще
е уникален, или определена колона на вашата база данни или маса
ще бъде уникален, за да изберете извън конкретните редове.
>> Можете също да имате общ първичен ключ, който може да се намери повод
да се използва, което е само на комбинация на две колони,
е гарантирано да бъде уникален.
Така че може би имате един колона, която е Както и Bs,
една колона, която е една, две, и три, но вие ще само някога
има един A1, единична А2, и така нататък, и така нататък.
Но може да има B2, а С2, или А1, А2, А3, А4.
Така че може да имате няколко As, множествена Bs, множество такива, множество двойки,
но можете да само да имат единичен А1, В2, В3, и така нататък.
Така че, както казах, SQL е език за програмиране,
но това е доста ограничен речников запас.
Това не е чак толкова експанзивен като C и PHP и други езици
че ние говорим в хода.
Тя е по-многословен а език, отколкото това, което сме
Ще говорим за това в видео, тъй като в това видео
ние ще говорим за четири операции, които ние
може да извърши за една маса.
>> Има повече от това.
Ние можем да направим повече от това, но за нашите цели,
ние сме като цяло ще бъде с помощта на само четири operations-- вложка,
изберете, обновяване и изтриване.
И вие можете да вероятно интуитивно предполагам това, което всички тези четири неща направи.
Но ние ще отидем в битов на подробност на всеки един.
>> Така за целите на настоящото видео, нека приемем,
ние сме от следните два маси в единна база данни.
Ние имаме таблица, озаглавена потребители, които допринасят четири columns-- ID номер, потребителско име,
парола и пълните си имена.
И ние имаме втори маса в същата база данни
наречено Moms, че просто съхранява информация за потребителско име и майка.
Така че за всички примери В това видео, ние ще
да се използва тази база данни и последващи актуализации към него.
Така че нека да кажем, ние искаме да добавяне на информация към маса.
Това е, което операцията вложка прави.
Обяснявайки всички тези команди, аз ще
да ви даде обща скелет за използване.
Защото в общи линии, запитванията ще изглеждат доста сходни,
ние просто ще трябва да се променя малко по-различни парчета информация
да правя различни неща, с масата.
>> Така че за INSERT, скелета прилича на вид това.
Искаме да вмъкнете в дадена таблица.
Тогава ние имаме един отворен скоби както и списък на колони
че искаме да се сложи ценности в.
Намали скоби, на следните стойности и след това
отново, ние списък на стойностите ние искаме да се сложи в таблицата.
>> Така че пример за това би било следното.
Искам да вмъкнете в таблицата Потребителите следния columns--
потребителско име, парола и FULLNAME.
Така че нов ред, където аз съм пускането в тези три колони и ние сме
ще пуснат в стойностите Newman, USMAIL и Нюман.
Така че в този случай, аз съм извеждането на малки букви Нюман
в колоната за потребителско име, парола USMAIL и пълното име столицата N
Нюман в колоната за FULLNAME.
>> Така че тук е това, което на базата данни Приличаше преди.
Ето какво таблицата на потребителите по отношение на отгоре изглеждаше като преди да направи това.
След като изпълните тази заявка, ние се получи това.
Добавихме нов ред в таблицата.
Но забележете това нещо че аз не уточни,
но някак си имам стойност за, която е в този 12-точно тук.
Не съм казал, че искам да сложи ID номер в там.
Исках да сложи потребителско име, парола, FULLNAME.
И аз го направих, че това е добре.
>> Но аз също имам този 12.
Защо получих този 12?
Е, оказва се, че когато дефинирате
колона, която ще ви бъде първичен ключ, който е обикновено,
както казах, идентификационен номер.
Това не винаги е задължително Ще бъде идентификационен номер,
но това е обикновено е добра идея да се да бъде някакъв вид на цяло число.
Имате опция в PhpMyAdmin когато създавате вашата база данни
или масата ви да зададете, че колона като автоматично Нарастваща.
>> Което е наистина добра идея, когато можете да започнете работа с първичен ключ,
защото искате всяка стойност в тази колона да бъде уникален.
И ако сте пропуснали да посочите то в продължение на повече от едно лице,
сега имате ситуация, в която тази колона Вече не е уникална.
Имате две заготовки, така че не може да вече еднозначно идентифициране на column--
или вече не може еднозначно идентифицира един ред въз основа на тази колона.
Той е загубил всичките си стойност като първичен ключ.
>> И така, очевидно това, което съм направил тук е конфигуриран потребителския идентификатор
колона за автоматично увеличение, така че всеки път I добавите информация в таблицата,
той автоматично ще ми даде стойност за първичния ключ.
Така че аз никога не мога да забравя да го направя, защото базата данни ще го направи вместо мен.
Така че това е вид хубаво.
И така, ето защо ние се 12 там, защото съм
определя, че колона до автоматично увеличаване.
Ако аз добавя някой друг че ще бъде 13, ако аз добавя
някой друг, че ще е 14, и така нататък.
>> Така че нека просто направим още едно вмъкване.
Ние ще вмъкнете в таблицата на майките, в специално, потребителското име и майката
колоните, стойностите Крамер и Babs Крамер.
И така имахме преди.
След като се изпълни, че SQL заявка, ние имаме това.
Добавихме Kramer и Babs Kramer на масата за майките.
>> Така че това е вмъкване.
SELECT е това, което ние използваме за извличане информация от масата.
Така че това е начинът да стигнем информация от базата данни.
И така добави команди ще бъдат много често се използва в програмирането.
Генералът framework-- на обща скелет изглежда по този начин.
Изберете набор от колони от маса, и след това евентуално
можете да укажете condition-- или това, което ние обикновено наричаме предикат,
обикновено е терминът, които използваме в SQL.
>> Но това е основно това, което конкретни редове, които искате да получите.
Ако искате да, вместо да се всичко, стесни го надолу,
Това е мястото, където можете да направите това.
И след това, евентуално, можете също поръчате от определена колона.
Така че може би искате да имате неща сортирани Азбучен основава на една колона
или индекс въз основа на друг.
>> Отново, къде и ORDER BY са задължителни.
Но те вероятно ще бъде useful-- особено
Къде ще бъде полезно да се стесните така че не правим
получите цялата си база данни и обратно трябва да го обработим, вие просто се
парчетата от него, които са важни за вас.
Така например, аз може да искате да изберете ID номер и FULLNAME от потребителите.
Така че това, което може да изглежда това?
Така че тук е моята маса потребители.
Искам да изберете IDNUM и FULLNAME от потребителите.
Какво съм аз ще получа?
Отивам да се получи това.
Аз не го ограничите, така че аз съм получаване ID номер за всеки ред
и аз съм се насита име от всеки ред.
>> ДОБРЕ.
Какво става, ако искате да изберете парола от потребителите WHERE-- така че сега
Аз съм добавяне на състояние, а predicate-- където IDNUM е по-малко от 12.
Така че тук е моята база данни отново, моята маса потребители на върха.
Какво съм аз ще получите, ако искам да изберете тази информация, паролата,
където потребителското ID или IDNUM е по-малко от 12?
Отивам да се получи това информация обратно, нали?
Това се случва, че IDNUM е 10, по-малко от 12, ID номер 11 по-малко от 12.
Аз съм се паролата за тези редове.
Това е, което аз поисках.
Какво за това?
Какво става, ако искате да изберете звезда от майки маса, на която се равнява на потребителско име Джери?
OK, изберете звезда е специалитета нещо като жокер т.нар
която ние използваме, за да се получи всичко.
Така че те да кажеш, изберете потребителско име запетая майка, която
се случи да бъде единствената две колони с тази таблица,
Мога само да изберете звезда и да получите всичко
когато потребителското име равнява Джери.
И така, това е, което аз ще получите ако аз направих тази конкретна заявка.
>> Сега, бази данни са страхотно, защото те позволяват
нас, за да организираме информацията може би малко по-ефективно, отколкото сме
иначе биха могли.
Ние не трябва непременно да се съхранява всяка съответна част от информацията
за употреба в една и съща маса.
Имахме две маси там.
>> Ние трябва да се съхранява име на майката на всеки,
а може би и ние нямаме социално осигуряване номер, имаме тяхната дата на раждане.
Това не винаги се нуждаем да бъде в същата таблица.
Докато можем да определим взаимоотношения между tables--
и това е, когато тази релационна Терминът база данни вид идва
в play-- толкова дълго, колкото можем да определим връзки между таблиците,
можем да подреди на раздробяват или абстрактни неща по начин,
където имаме само на наистина важна информация
ние се грижим за в таблица на потребителя.
И тогава имаме допълнителна информация или допълнителна информация в други таблици
че можем да се свърже отново на главния маса потребители по определен начин.
>> Така че тук имаме тези две маси, но има връзка между тях,
нали?
Тя изглежда като потребителско име може да е нещо
че съществува общо между тези две различни таблици.
И какво, ако сега ние имаме ситуация, в която ние
искате да получите пълно име на потребител от маса на потребителя, и на майка им
назоват от таблицата на майка?
Ние нямаме начин да се получи че в този си вид, нали?
Няма по една таблица, която съдържа както пълно име и името на майка му.
Ние нямаме тази възможност от това, което сме виждали досега.
>> И така, ние трябва да представим идеята за JOIN.
И се присъединява вероятно са най-complex--
това е наистина най-сложна операция ние ще говорим за в клипа.
Те са малко по-сложно, но след като се закача за него,
те всъщност не са толкова зле.
Това е просто един специален случай на SELECT.
Отиваме да изберете набор от колони от таблица присъединяват
във втора таблица на някои предикат.
>> В този случай, мисля за това искал this-- маса за един е един кръг тук,
масичка и две е друг кръг тук.
И това предикатното част в средата, това е
нещо като ако смятате като за диаграма на Вен, което
те са по-чести?
Ние искаме да свържем тези две маси въз основа на това, което те са по-чести
и да се създаде тази хипотетична маса това е сливането на двете заедно.
Така че ние ще видим това в Например, и може би това ще помогне
го изясним малко.
Така че може би искате да изберете user.fullname и moms.mother
от потребители се присъединяват в маса за майки във всяка ситуация
където колоната потребителско име е същото между тях.
И това е една нова синтаксис тук, на този потребител.
и майки ..
Ако аз правя много маси заедно, мога да посочите една маса.
Мога да се разграничат по-специално относно че на най-долу там.
Мога да се разграничат потребителско име колона от таблицата на потребителите
от колоната име на майки на маса, които са otherwise--
ако ние просто каза потребителско име равнява потребителско име, че не е така наистина
означава нищо.
Искаме да го направим, когато те съвпадат.
>> Така че мога да укажете на масата и Име на колона в случай на ситуация,
когато би било неясно това, което аз говоря.
Така че това е всичко, което правя е, че съм Казвайки това колона от таблицата,
и е много ясна.
Така че отново, аз съм изберете пълно име и името на майката
от таблицата на потребителите, свързани заедно таблицата на майките във всяка ситуация
където те споделят, че column-- те споделят, че потребителското име понятие.
>> Така че тук са таблиците, които имахме преди.
Това е състояние на нашите база данни, която съществува в момента.
Информацията, която се извлича е това да се започне с.
Това е най-новата маса отиваме да се създаде съчетаването на двете заедно.
И забележи ние не сме подчертаване Поредни Нюман в таблица на потребителя,
и ние не сме се подчертае Поредни Креймър в таблицата за майки
тъй като нито една съществува в както sets-- в двете таблици.
>> Единствената информация, която е общо между тях е Jerry е в двете таблици
и gcostanza е и в двете таблици.
И така, когато правим на SQL JOIN, това, което ние get-- и ние правим всъщност се получи това.
Това е нещо временно променлива.
Това е като една хипотетична сливане на двете плочи.
Ние всъщност се получи нещо като тази, в която
ние сме обединили таблиците на информация, че те са по-чести.
>> Така че забележите, че users.username и moms.username колона,
това е точно същото.
Това беше информацията, която е в съответствие от потребителите
маса и масата на майките.
И така, ние ги слива заедно.
Ние изхвърли Kramer, защото той не съществува в таблицата на потребителите,
и ние се изхвърли Newman, защото той не съществува в таблицата на майките.
Така че това е хипотетичен сливането използване на операцията JOIN на SELECT.
>> И тогава ние търсехме пълното име на потребителя и майка на потребителя,
и така това е информацията, ние ще получите от цялостната заявката
че ние направихме със SELECT.
Така че ние се присъедини масите заедно и ние се екстрахира тези две колони,
и така че това, което ще получим.
Но SQL присъединява един вид сложно.
Може би няма да ги правя прекалено много, но просто има някаква идея на скелета
които можете да използвате, за да се слеят две маси заедно, ако са необходими за.
Последните две са битов опростена обещавам.
Така актуализиране, ние можем да използваме UPDATE да променя информацията в таблица.
Общият формат е UPDATE някои таблица, се определят някои колона до известна стойност
КЪДЕ някои предикат е изпълнено.
Така например, ние може да искате да актуализира таблицата за потребители
и да зададете парола за бала бала, където ID номер е 10.
>> Така че в този случай, ние сме актуализиране на таблицата на потребителите.
Номерът на ID е 10 за че първия ред там,
и ние искаме да се актуализират парола за ала-бала.
И така, това е, което ще се случи.
Това е доста ясен, нали?
Това е просто един много прост изменение на таблицата.
>> DELETE е операцията сме свикнали да премахване на информация от една маса.
Изтрий от масата, където някои предикат е изпълнено.
Искаме да изтриете от маса потребители, например
когато потребителското име е Нюман.
Вероятно можете да се досетите какво ще се се случи тук, след като се изпълни, че SQL
заявка, Newman е отишъл от масата.
>> Така че всички тези операции, както казах, са много лесно да се направи в 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 би основно се окажете отпечатване,
Благодаря за влизане в системата, Джери Зайнфелд.
Това беше пълното име където IDNUM се равнява на 10.
>> И така, всичко, което правя е аз съм now-- I съхранява
моя въпрос, резултатите от моя въпрос и води до по асоциативен масив,
и FULLNAME е името на колоната аз получавах за.
Така че това е моят ключ в резултатите асоциативен масив, който искам.
Така Благодаря за влизане в системата, $ резултати, FULLNAME ще разпечатате, ще се придържаме
точно в тези, къдрава между тиранти, Джери Зайнфелд.
И аз ще искал да разпечатате съобщението Благодаря за влизане в системата Джери Зайнфелд.
>> Сега, ние вероятно не искате да твърдия кодови такива неща в, нали?
Ние може да искате да направите нещо подобно за печат е, където можем да се замени и може би
събира различна информация, или може би имате процеса на заявка
различна информация.
И така заявка, функция за търсене, има това понятие за сортиране на замествания
много подобен на отпечатване е процента ите и процента в, е въпросителни знаци.
>> И ние можем да използваме въпрос марка много аналогично
да отпечатате е да заместващи променливи.
Така че може би вашето потребителско влезете в профила си по-рано, и сте записали своя идентификационен номер на потребителя
на масива $ _SESSION на PHP супер глобално в ключовата ID.
Така че може би, след като влезете в профила си, зададете $ _SESSION ID равнява на 10,
екстраполиране от примера ние просто видях преди една секунда.
>> И така, когато ние действително изпълнява това въпроси към резултатите сега,
това ще включите в 10, или каквото ID стойност $ _SESSION е.
И така, това ни позволява да да бъде малко по-динамичен.
Ние не сме трудно кодиране неща в повече.
Ние сте спестяване на информация някъде и след това
можем да използваме тази информация отново, за да нещо като обобщим това, което искаме да направим,
и просто плъг-ин и промяна поведението на нашата страница
въз основа на това, което ID номер на потребителя всъщност е, след като са влезли вътре.
Възможно е също така, все пак, които определят вашите резултати
може да се състои от няколко реда.
В този случай, трябва да имате масив от arrays--
масив от асоциативни масиви.
И просто трябва да превъртите през него.
И ние знаем как да превъртите чрез масив в PHP, нали?
Така че тук е може би най- комплекс нещо, което сме виждали досега.
То всъщност интегрира три езика заедно.
>> Тук, в червено, това е някакъв HTML.
Аз очевидно starting-- това е фрагмент от някои HTML, че имам.
Аз съм се започне нов параграф, който казва майките на Зайнфелд телевизора.
И след това веднага след това Аз съм се започне една маса.
И тогава, след това, аз има някои PHP, нали?
Имам всичко това PHP код в там.
Аз очевидно ще направи заявка.
И за да направи заявката, аз отивам да да се използва SELECT FROM майки майки.
>> Така че това е getting-- това е SQL.
Така че синьото е SQL.
Червеният видяхме втори Преди беше HTML.
И на зелено тук е PHP.
Така че аз съм на заявката в моята база данни, аз съм
избиране на всички от майки в таблицата на майките.
Не само това стесняване на специално ред, аз питам за всички тях.
>> Тогава аз се провери, ако резултатът е не равни равнява неверни.
Това е просто моят начин на проверка на сортиране на резултатите, ако не е равно на нула,
че искаме да видим в например.
Основно това е просто да се направи проверка сигурен, че тя действително има данни за минали периоди.
Защото аз не искам да започвам печат от данни, ако аз не се получи никакви данни.
След това за всеки резултати в резултат на foreach синтаксис от PHP, всичко, което правя
отпечатва $ резултат майки.
И така, аз отивам да получат набор на всички от майките на each--
това е масив от асоциативен arrays-- и аз съм отпечатване
като всеки отделен ред на таблица.
И това е наистина доста много по всичко там е до него.
Знам, че има малко по- битов става тук
в този последен пример с масиви от arrays-- масиви на асоциативни масиви.
Но това наистина е просто ври предвидени в SQL, за да направи заявка,
Обикновено избора, след като вече сме публикувате информация в таблицата,
и след това просто го издърпате навън.
>> И това е, че ние ще го издърпайте в този конкретен случай.
Ние ще извлече всички на индивида майки от таблицата на майките.
Имаме цял набор от тях, и ние искате да превъртите през и разпечатате
всеки един.
Така че отново, това е може би най-сложната примера
сме виждали, защото ние сме на смесване на три различни езици заедно, нали?
>> Отново имаме HTML тук в червено, смесва с някои SQL тук в синьо,
смесва с някои PHP в зелено.
Но всички те играят добре заедно, това е
само въпрос на развиване добри навици, така че можете да получите
ги да работят заедно, така, както искате.
И единственият начин наистина да направи това е да се отработят, практика, практика.
Аз съм Дъг Лойд, това е CS50.