[REPRODUCCIÓ DE MÚSICA] DOUG LLOYD: En els nostres vídeos sobre temes de desenvolupament web, hem esmentat el concepte de una base de dades un parell de vegades, oi? Així que una base de dades que està probablement està familiaritzat amb de dir utilitzant Microsoft Excel o Fulls de càlcul de Google. És realment només una organitzada un conjunt de taules, files i columnes. I una base de dades és on les nostres botigues del lloc web informació que és important per al nostre lloc web perquè funcioni correctament. De nou, un exemple molt comú aquí es emmagatzemar noms d'usuari i contrasenyes en una base de dades, de manera que quan un usuari es registra al nostre lloc web, la base de dades es pot consultar per veure Si hi ha aquest usuari a la base de dades. I si ho són, la comprovació que la contrasenya és correcta. I si la contrasenya és correcta, llavors podem donar-los qualsevol pàgina que estan demanant. Així que vostè està probablement, de nou, familiar amb aquesta idea des d'Excel o Google Els fulls de càlcul. Tenim bases de dades, taules, files i columnes. I això és realment una espècie del conjunt fonamental del desglossament jeràrquic aquí. Així que aquí està un full de càlcul Excel. I si alguna vegada has obert aquest o altre programa similar vostè sap que ets aquí estan rows-- 1, 2, 3, 4, 5, 6, 7. Aquests són columnes. Potser aquí, encara que és possible No utilitzeu aquesta funció terriblement molt-- Vaig a fer un zoom en-- tenim aquesta idea d'un full. Així que potser aquests fulls, si Altern d'anada i tornada, són diferents taules que existir en la meva base de dades. I si seguim l'exemple de tot la forma, el nom d'aquesta base de dades és el llibre 1. Potser tinc llibre 2 i 3 del llibre. Així que cada arxiu d'Excel és un base de dades, cada full és una taula, ia l'interior de cada taula que tinc aquesta idea de files i columnes. Llavors, com puc treballar amb aquesta base de dades? Com puc obtenir informació d'ella? Bé, hi ha un llenguatge anomenat SQL-- que en general només dic Sequel-- i que representa el Structured Query Language. I és un llenguatge de programació, però és una programació bastant limitat idioma. No és exactament igual que els altres que hem treballat. No obstant això, el propòsit d'aquest llenguatge de programació és per consultar una base de dades, a demanar informació d'una base de dades, trobar informació en una base de dades, i així successivament. També, en CS50-- i és una molt plataforma comuna, es diu MySQL. Això és el que fem servir en el curs. És una font oberta plataforma que estableix 1 denominat database-- relacional una base de dades, de manera efectiva. No necessitem per arribar en massa detalls en el que és una base de dades relacional és. Però el llenguatge SQL és molt hàbil per treballar amb MySQL i altres similars estils de bases de dades relacionals. I moltes instal·lacions de MySQL venir amb alguna cosa anomenada phpMyAdmin, que és una gràfica d'usuari interface-- 1 GUI-- que fa que sigui una mica més fàcil d'usar per a executar consultes de bases de dades, perquè les bases de dades no només són utilitzades pels programadors avançats, oi? A vegades hi ha aquestes petites empreses, i no poden donar-se el luxe de contractar un equip de programadors, però encara necessiten per emmagatzemar informació en una base de dades. Una cosa així com phpMyAdmin fa que sigui molt fàcil per a algú que mai ha programat abans de recollir i familiaritzar-se amb la forma per treballar amb una base de dades. El problema és, phpMyAdmin, mentre és una eina fantàstica per a l'aprenentatge sobre les bases de dades, és manual. Vas a haver d'iniciar sessió en i executar ordres i el tipus les coses en manualment. I com sabem per la nostra exemple de programació web PHP, haver de fer de forma manual coses en el nostre lloc web, si volem una dinàmica, activa sensible lloc web, potser no és el millor enfocament. Ens agradaria trobar una manera de potser automatitzar això d'alguna manera. I SQL ens permetrà fer això. Així que quan anem a començar a treballar amb SQL, que primer necessita tenir un base de dades per treballar. Creació d'una base de dades es cosa que probablement ho farà en phpMyAdmin, perquè només haurà de fer una vegada, i la sintaxi per fer-ho és molt més senzill. És molt més fàcil fer-ho en una interfície d'usuari gràfica d'escriure-ho com una ordre. La comanda pot ser una mica molest. De la mateixa manera, la creació d'una taula pot aconseguir una mica molest també. I així les coses com la creació d'una base de dades i la creació d'una taula, que ets probablement només va a fer vegada-- una vegada per taula, un cop per database-- que està bé fer això en una interfície gràfica. En vies de la creació d'una taula, se li també cal especificar tots els columnes que estaran en aquesta taula. Quin tipus d'informació fer que desitja emmagatzemar a la taula? Potser el nom d'un usuari i data de naixement, contrasenya, número d'identificació d'usuari, i potser ciutat i estat, no? I per cada vegada que vulguem afegir un usuari a la base de dades, volem arribar als sis d'aquestes peces d'informació. I ho fem afegint files a la taula. Així que primer vam crear una base de dades, llavors es crea una taula. Com a part de la creació una taula, se'ns demana per especificar que cada columna ens agradaria en aquesta taula. I llavors com que vam començar a afegir informació per a la base de dades i consultar la base de dades més generally-- no només afegir, però tota la resta ens fer-- estarem tractant amb files de la taula, que és un la informació de l'usuari per a tot el conjunt. Així que cada columna de SQL és capaç de l'emmagatzematge de dades d'un tipus de dades en particular. Així que tipus de eliminem aquest idea dels tipus de dades en PHP, però són de nou aquí en SQL. I hi ha un munt de tipus de dades. Aquí és només 20 d'ells, però ni tan sols tots ells. Així que tenim idees com INTs-- Integers-- probablement sabem que aquesta columna pot contenir nombres enters. I hi ha variacions thereon-- Smallint, TINYINT, MEDIUMINT, BIGINT. Potser no sempre necessitem 4 picades. Potser necessitem 8 bytes, de manera que pot utilitzar aquestes variacions en els nombres enters a ser una mica més eficient de l'espai. Podem fer números decimals, es pot fer números de punt flotant. Aquests són bastant similars. Hi ha algunes diferències, i si ho faria agradaria buscar el Tipus SQL de guia, pot veure el que el lleuger diferències són entre ells. Potser volem emmagatzemar informació sobre data i hora. Potser estem fer el seguiment de quan l'usuari es va unir al nostre lloc web, i així potser volem tenir una columna que és un temps de data o una marca de temps que indica quan l'usuari realment registrat. Podem fer geometries i cadenes lineals. Això és realment molt bo. Podríem traçar un zona geogràfica Coordenades SIG per traçar una àrea. Així que en realitat pot emmagatzemar aquest tipus d'informació en una columna de SQL. TEXT és a bombolles gegants de text, potser. ENUM són bastant interessant. En realitat existeixen en C. No ho fem parlar d'ells perquè no són terriblement ús comú, almenys CS50. Però és un tipus de dades enumerat, que és capaç de mantenir els valors limitats. Un molt bon exemple aquí seria per crear una enumeració, on els set els valors possibles són Diumenge, Dilluns, Dimarts, Dimecres, Dijous, Divendres, Dissabte, oi? Aquest tipus de dades el dia de Setmana no existeix, però podríem crear un tipus de dades enumerat com que aquesta columna pot solament mai sostingui un d'aquests set valors possibles. Hem enumerem tots dels valors possibles. Llavors tenim CHAR i VARCHAR, i jo tinc el color d'aquests de verd perquè estem en realitat Va a prendre un segon per parlar de la diferència entre aquestes dues coses. Així CHAR, a diferència de C, on CHAR era un sol caràcter, SQL en un CHAR es refereix a una cadena de longitud fixa. I quan vam crear aquest columna, que en realitat pot especificar la longitud de la cadena. Així, en aquest exemple, podríem dir CHAR (10). Això vol dir que cada element d'aquesta columna constarà de 10 bytes d'informació. Ni més, ni menys. Així que si ho intentem i ho posem en un 15 bit o un element de 15 caràcters o el valor en aquesta columna, només estem obtenim la primera 10. Si posem en els dos valor a llarg caràcter, tindrem els dos personatges, i després de vuit picades nuls. Mai serem més eficients que això. Un VARCHAR és una mena la nostra noció d'una cadena que estem familiaritzats amb de C o des de PHP. És una cadena de longitud variable. I quan es crea aquesta columna, només especificar les longituds màximes possibles. Així que potser 99, o comunament 255. Aquesta seria la longitud màxima. I pel que si ens emmagatzemant 15 cadena de caràcters, utilitzaríem 15 bytes, potser 16 bytes per al terminador nul. Si estiguéssim emmagatzemar un de tres cadena de caràcters, utilitzaríem tres o quatre bytes. Però no podríem utilitzar el ple 99. Així que per què tenim tant? Bé, si hem de trobar la manera molt alguna cosa és amb un VARCHAR, hem de tipus d'iteració a través d'ella igual que ho vam fer en C i esbrinar on s'atura. Mentre que si sabem que tot en aquesta columna és de 10 bytes, potser sabem que la informació, podem saltar 10 bytes, 10 bytes, 10 bytes, 10 bytes, i sempre trobar la principi de la cadena. Així que és possible que tinguem alguna desaprofitat espai amb un CHAR, però potser hi ha un comerç fora de tenir una millor velocitat en la navegació de la base de dades. Però potser volem que la flexibilitat d'un VARCHAR en lloc de having-- Si el nostre CHAR era 255, però la majoria dels nostres usuaris només van anar introduint tres o quatre bytes valor de la informació o tres o quatre caràcters de valor de la informació. No obstant això, alguns usuaris estaven usant tot el 255, potser VARCHAR seria més apropiat allà. És una espècie d'una solució de compromís, i generalment per a fins d'CS50, vostè no ha de preocupar massa sobre si s'utilitza un CHAR o VARCHAR. Però en el món real, aquestes coses no importa perquè totes aquestes columnes ocupen un espai físic real. I l'espai físic, en el món real, té el seu preu. Així que una altra consideració quan vostè està construint una taula és escollir una columna a ser el que es diu una clau principal. I un clau principal és una columna on cada valor individual és únic. I això vol dir que vostè pot fàcilment seleccionar una sola fila amb només mirar en la clau principal de la fila. Així, per exemple, en general, amb els usuaris, no volen dos usuaris que tenir el mateix nombre d'ID d'usuari. I així, potser vostè té gran quantitat d'informació, i potser dos usuaris poden tenir el mateix nom-- Té John Smith i John Smith. Això no és necessàriament un problema, perquè hi ha diverses persones en el món anomenat John Smith. Però només tenim el número d'identificació d'un usuari 10, un usuari número 11, 12, 13 ID. No tenim dos usuaris amb el mateix número, i així potser els números d'identificació d'usuari seria una bona clau principal. No tenim tota duplicació, i ara podem única identificar cada filera just mirant a aquesta columna. L'elecció de les claus principals en realitat pot realitzar operacions de taula subsegüents molt més fàcil perquè es pot aprofitar el fet que certes files voluntat ser únic, o d'un determinat columna de la base de dades o taula serà únic per recollir files particulars fora. Vostè també pot tenir una primària conjunta clau, que vostè pot trobar ocasió utilitzar, que és només un combinació de dues columnes que es garanteix que sigui únic. Així que potser vostè en té un columna que és A i B, una columna que és un, dos, i tres, però vostè només alguna vegada tenir una sola A1, un sol A2, i així successivament i així successivament. Però és possible que tingui un B2, 1 C2, o A1, A2, A3, A4. Així que és possible tenir múltiples Com, múltiple B, els múltiples, múltiples parelles, però mai es pot tenir només un sola A1, B2, C3, i així successivament. Així que, com vaig dir, SQL és un llenguatge de programació, però té un vocabulari bastant limitat. No és tan expansiva com C i PHP i altres llenguatges que es parla en el curs. És un més detallat el llenguatge del que som anem a parlar en aquest vídeo, perquè en aquest vídeo anem a parlar sobre quatre operacions que pot realitzar sobre una taula. Hi ha més d'això. Podem fer més que això, però per als nostres propòsits, estem generalment utilitzarà només quatre d'inserció operations--, seleccionar, actualitzar i eliminar. I és probable que pugui intuïtivament endevinar el que els quatre d'aquestes coses fan. Però anirem a una mica de detalls sobre cada un d'ells. Així que per als fins d'aquesta vídeo, suposarem hem els dos següents taules d'una base de dades única. Tenim una taula anomenada usuaris que té de quatre columns-- número d'identificació, nom d'usuari, contrasenya i nom complet. I tenim un segon taula en la mateixa base de dades anomenada mares que acaba de magatzems d'informació sobre un nom d'usuari i una mare. Així que per a tots els exemples en aquest video, anem a ser l'ús d'aquesta base de dades i actualitzacions posteriors a aquesta. Així que diguem que volem afegir informació a una taula. Això és el que fa l'operació d'inserció. En explicar tots aquestes comandes, vaig per donar-li un esquelet en general a utilitzar. Perquè en el fons, les consultes van aspecte molt similar, només estarem canviant lleugerament diferents peces d'informació fer coses diferents amb la taula. Així que per INSERT, l'esquelet es veu alguna cosa així com això. Volem inserir en una taula en particular. Llavors tenim un parèntesi obert i una llista de columnes que volem posar valors en. Tancar parèntesi, el els següents valors i, a continuació una altra vegada, llistem els valors volem posar a taula. Així un exemple d'aquest seria el següent. Vull inserir a la taula usuaris la següent columns-- nom d'usuari, contrasenya i nom complet. Així que una nova fila en què m'estic posant en aquests tres columnes i estem posarà en els valors Newman, USMAIL, i Newman. Així que en aquest cas, estic posant l'newman minúscules a la columna de nom d'usuari, la contrasenya USMAIL, i el nom de capital plena N Newman a la columna de nom complet. Així que això és el que la base de dades semblava abans. Això és el que la taula d'usuaris a la superior que semblava abans que ens vam fer. Després executem aquest consulta, obtenim això. Hem afegit una nova fila a la taula. Però noti una cosa que no va especificar, però d'alguna manera tinc un valor per, que és aquest 12 aquí. Jo no he dit que volia posi el número d'identificació en aquest país. Volia posar nom d'usuari, contrasenya, nom complet. I ho vaig fer, això està bé. Però també tinc aquest 12. Per què em surt aquest 12? Bé, resulta que quan s'està definint una columna que es va a ser el seu clau principal, que sol ser, com he dit, un número d'identificació. No sempre és necessàriament serà un número d'identificació, però en general és una bona idea haver algun tipus de valor sencer. Vostè té una opció en phpMyAdmin quan es crearà la base de dades o la seva taula per establir que columna com incremental automàtic. La qual cosa és una molt bona idea quan està treballant amb una clau principal, perquè vol tot valor en aquesta columna de ser únic. I si vostè s'oblida d'especificar per més d'una persona, ara té una situació en la qual que la columna ja no és únic. Vostè tindrà dos espais en blanc, de manera que no poden ja identificar un column-- o ja no únicament pot identificar una fila basada en aquesta columna. Ha perdut tot el seu valor com a clau principal. I així, segons sembla, el que he fet aquí es configura l'ID d'usuari columna d'increment automàtic perquè cada vegada afegir informació a la taula, serà automàticament donar-me un valor per a la clau principal. Així que mai podré oblidar fer-ho perquè la base de dades ho farà per mi. Així que això és una mica agradable. I per això és que tenim 12 allà, perquè he establir que la columna fins a la subhasta d'automòbils. Si he afegit una altra persona que seria 13, si he afegit una altra persona que seria 14, i així successivament. Així que farem una inserció més. Anem a inserir en la taula de les mares, en en particular, el nom d'usuari i la mare de columna, els valors Kramer i Babs Kramer. I pel que vam tenir abans. Després executem que Consulta SQL, tenim això. Hem afegit Kramer i Babs Kramer a la taula de les mares. Així que ha d'inserir. SELECT és el que fem servir per extreure informació de la taula. Així que aquesta és la forma en que obtenim la informació de la base de dades. I les ordres de manera SELECT seran utilitzat amb molta freqüència en la programació. El general framework-- la esquelet en general són aquestes. Seleccioneu un conjunt de columnes de una taula, i després opcionalment pot especificar un condición-- o el que normalment anomenem un predicat, sol ser el terme que fem servir en SQL. Però és bàsicament el que files particulars que volen aconseguir. Si ho desitja, en lloc d'obtenir tot, reduir-la, aquí és on vostè faria això. I a continuació, opcionalment, també pot ordenar per una columna en particular. Així que potser vostè vol tenir coses ordenats alfabètic basat en una columna o per ordre alfabètic basat en un altre. Un cop més, WHERE i ORDER BY són opcionals. Però probablement estaran useful-- particular ON serà útil per reduir de manera que no ho fa obtenir tota la base de dades d'anada i ha de processar-lo, que acaba d'arribar les peces del que t'importa. Així, per exemple, pot ser que voleu seleccionar Número d'identificació i nom complet dels usuaris. Llavors, què podria aquest aspecte? Així que aquí està la meva taula d'usuaris. Vull seleccionar IDNUM i nom complet dels usuaris. Què aconseguiré? Vaig a aconseguir això. No limitar la cerca, així que estic obtenir el número d'identificació per a cada fila i m'estic posant el ple nom de cada fila. D'ACORD. Què passa si vull seleccionar contrasenya dels usuaris WHERE-- ara Estic afegint-hi una condició, un predicate-- on IDNUM és inferior a 12. Així que aquí està la meva base de dades de nou, la meva taula d'usuaris de la part superior. Què vaig a tenir si vull seleccionar aquesta informació, la contrasenya, on ID d'usuari o IDNUM està a menys de 12? Vaig a aconseguir aquest informació de nou, oi? Passa que IDNUM és 10, menys de 12, número d'identificació d'11 a menys de 12. M'estic posant la contrasenya per a aquestes files. Això és el que vaig demanar. ¿I això? Què passa si vull seleccionar estrelles de la taula de mares, on nom d'usuari és igual a Jerry? OK, seleccioneu estrella és l'especial espècie de comodí anomenats que utilitzem per aconseguir tot. Així que estan dient seleccioni username mare coma, que va passar a ser l'únic dues columnes d'aquesta taula, Jo només puc seleccionar estrelles i tenir tot on el nom d'usuari és igual a Jerry. I això és el que m'agradaria tenir si he fet aquesta pregunta en particular. Ara, són les bases de dades grans perquè permeten nosaltres vam organitzar la informació potser una mica més eficientment que ens podria d'una altra manera. No necessàriament a emmagatzemem cada peça rellevant de la informació sobre un usuari en la mateixa taula. Teníem dues taules allà. Necessitem emmagatzemar nom de la mare de tots, i potser no tenim la seguretat social nombre, tenim la seva data de naixement. Això no sempre necessita per estar a la mateixa taula. Mentre podem definir relacions entre el tables-- i aquí és on que relacional terme base de dades de tipus de tracta en play-- el temps que podem definir relacions entre les taules, podem espècie de compartimentar o coses abstractes d'una manera, on només tenim la informació realment important ens preocupem en la taula de l'usuari. I després tenim informació auxiliar o informació addicional en altres taules que podem connectar de nou a la principal taula d'usuaris d'una manera particular. Així que aquí tenim aquestes dues taules, però hi ha una relació entre ells, Oi? Sembla com nom d'usuari podria ser alguna cosa que hi ha en comú entre aquestes dues taules diferents. ¿I què si ara tenim una situació en la qual que desitgi obtenir el nom complet d'un usuari la taula de l'usuari, i la seva mare de nom de la taula de la mare? No tenim una manera d'aconseguir que tal com està, no? No hi ha una sola taula que conté tant el nom complet i el nom de la mare. No tenim aquesta opció del que hem vist fins ara. I així hem d'introduir la idea d'un JOIN. I s'uneix són probablement el més complex-- en realitat és més complexa operació parlarem en el vídeo. Són una mica complicat, però una vegada que el pengi d'ella, que en realitat no estan tan malament. És només un cas especial d'un SELECT. Anem a seleccionar un conjunt de columnes d'una taula d'unió en una segona taula en algun predicat. En aquest cas, pensar-hi com esto-- Taula és un cercle aquí, taula dos és un altre cercle aquí. I aquesta part de predicats en el medi, que és una cosa així com si vostè pensa sobre com un diagrama de Venn, el Què tenen en comú? Volem vincular aquests dos taules en base al que tenen en comú i crear aquesta taula hipotètica que és la fusió dels dos junts. Així que anem a veure això en un exemple i potser això va a ajudar aclarir una mica. Així que potser voleu seleccionar user.fullname i moms.mother dels usuaris s'uneixen en el taula mares en cada situació on la columna el nom d'usuari és el mateix entre ells. I aquest és un nou sintaxi aquí, aquest usuari. i les mares .. Si estic fent diverses taules junts, puc especificar una taula. Puc distingir, en particular en en que a la part inferior allà. Puc distingir el nom d'usuari la columna de la taula d'usuaris de la columna nom d'usuari del taula de mares, que són otherwise-- si acabem de dir nom d'usuari és igual nom d'usuari, que en realitat no significar qualsevol cosa. Volem fer-ho on coincideixen. Així que puc especificar la taula i el nom de la columna en cas d'una situació on seria poc clar el que estic parlant. Així que això és tot el que estic fent no estic dient aquesta columna d'aquesta taula, i ser molt explícit. Així que de nou, estic seleccionant la nom complet i el nom de la mare de la taula d'usuaris connectats entre si amb la taula de les mares en cada situació on comparteixen que column-- comparteixen aquest nom d'usuari noció. Així que aquí estan les taules que teníem abans. Aquest és l'estat de la nostra base de dades, tal com existeix ara. La informació que estem extraient És aquest per començar. Aquesta és la nova taula que anem per crear la combinació d'aquests junts. I notem que no estem destacant Fila de Newman a la taula de l'usuari, i no estem destacant Fila de Kramer a la taula de les mares perquè no n'hi ha cap en tant sets-- en ambdues taules. L'única informació que es troba en comú entre ells és Jerry és en les dues taules i gcostanza és en les dues taules. I així, quan fem l'SQL JOIN, el que get-- i estem fent realment aconseguir això. És una espècie d'una variable temporal. És com una hipotètica fusió de les dues taules. En realitat obtenim alguna cosa com aquest, on hem fusionat les taules a la informació que tenen en comú. Així notar que users.username i la columna moms.username, que és exactament el mateix. Aquesta va ser la informació que era coherent dels usuaris taula i la taula de les mares. I així que ells es van fusionar. Descartem Kramer perquè no existia a la taula d'usuaris, i es va descartar Newman, perquè que no existeix en la taula mares. Així que aquesta és la fusió hipotètica mitjançant l'operació JOIN de SELECT. I després que estàvem buscant per al el nom complet de l'usuari i la mare de l'usuari, i pel que aquesta és la informació que que es poden aconseguir de la consulta general que vam fer amb SELECT. Així que ens unim a les taules i es van extreure aquestes dues columnes, i això és el que anava a aconseguir. Però SQL s'uneix a una classe de complicat. Vostè probablement no va a fer massa, però només tenir alguna idea de l'esquelet que es pot utilitzar per combinar dues taules si necessitaves. Els dos últims són un mica més simple ho prometo. Així que l'actualització, podem utilitzar ACTUALITZACIÓ per canviar la informació en una taula. El format general és actualitzar alguns taula, SET alguna columna a algun valor ON algun predicat està satisfet. Així, per exemple, podríem voler per actualitzar la taula d'usuaris i establir la contrasenya per Canyada Yada, on el nombre ID és de 10. Així que en aquest cas, estem l'actualització de la taula d'usuaris. El número d'identificació és 10 per a aquesta primera fila allà, i volem actualitzar la contrasenya per Canyada Canyada. I això és el que passaria. És bastant senzill, oi? És només una molt simple modificació a la taula. DELETE és l'operació que solíem eliminar la informació d'una taula. DELETE FROM taula WHERE algun predicat està satisfet. Volem eliminar de la taula d'usuaris, per exemple, on el nom d'usuari és Newman. Vostè probablement pot endevinar el que va a passar aquí després executem que SQL consulta, Newman s'ha anat de la taula. Així que totes aquestes operacions, com he dit, són molt fàcils de fer en phpMyAdmin. És una interfície d'usuari molt amigable. Però sí que requereix esforç manual. No volem emprar esforç manual. Volem que els nostres programes a fer això per nosaltres, no? Així que podríem voler fer aquesta programació. Volem incorporar SQL i tenen alguna cosa més que fer això per nosaltres. Però què hem vist que permet que fem programació alguna cosa? Hem vist PHP, oi? Introdueix alguns dinamisme als nostres programes. I així, per fortuna, SQL i PHP jugar molt bé junts. Hi ha una funció en PHP trucada de consulta, que es pot utilitzar. I vostè pot passar pel paràmetre o argument per consultar una consulta SQL que desitja executar. I PHP ho farà en nom seu. Així que després que ha connectat a la base de dades amb PHP, hi ha dos primàries que fas això. Hi ha alguna cosa que es diu MySQLi i una cosa anomenada DOP. No entrarem en una enorme quantitat de detall allà. En CS50 utilitzem DOP. Després d'haver connectat a la base de dades, a continuació, pot fer consultes seva base de dades passant les consultes com a arguments a les funcions de PHP. I quan ho fa, s'emmagatzema el conjunt de resultats en un array associatiu. I sabem com treballar amb matrius associatives en PHP. Així que podria dir alguna cosa així- $ resultats-- això és en PHP-- és igual a la consulta. I després a l'interior del funció de consulta que l'argument que estic passant per consultar que s'assembla a SQL. I de fet, que és SQL. Aquesta és la cadena de consulta que ho faria desitja executar en la meva base de dades. I així, en vermell, això és PHP. Aquesta és SQL que sóc integrant en PHP fent que l'argument de la funció de consulta. Vull seleccionar nom complet de usuaris, on el nombre d'identificació és igual a 10. I llavors potser després que jo he fet, Jo podria dir alguna cosa com això. Vull imprimir el missatge Gràcies per ingressar. I ho vull interpolate-- Vull interpolar $ resultats nom complet. I així és com jo treball amb això matriu associativa que vaig tornar. $ Resultats nom complet faria bàsicament acaben d'imprimir, gràcies per ingressar, Jerry Seinfeld. Aquest era el nom complet on IDNUM és igual a 10. I així, tot el que estic fent és que estic ara-- vaig guardar la meva consulta, els resultats de la meva recerca i els resultats en un array associatiu, i nom complet és el nom de la columna que estava rebent per. Així que aquesta és la meva clau en els resultats matriu associativa que vull. Així Gràcies per ingressar, $ resultats, nom complet s'imprimeixi, s'enganxarà al bell mig dels arrissada claus, Jerry Seinfeld. I m'agradarà per imprimir el missatge Gràcies per ingressar Jerry Seinfeld. Ara, és probable que no volem dur coses de codi com aquest, ¿no? Podríem voler fer alguna cosa com d'impressió f, on podem substituir i potser recopilar informació diferent, o potser que el procés de consulta informació diferent. I així, la consulta, la funció de consulta té aquesta noció de tipus de substitucions molt similar a imprimir f cent s i el percentatge de c, és signes d'interrogació. I podem fer servir pregunta marques molt anàloga per imprimir f a les variables de substitució. Així que potser l'usuari ha iniciat sessió anterior, i guardar el seu nombre d'ID d'usuari en $ _SESSION de PHP súper global en l'ID de la clau. Així que potser després que es registren en, configura $ _SESSION ID és igual a 10, extrapolant a partir de l'exemple que acabem de veure fa un segon. I així, quan en realitat ens executem Aquesta consulta els resultats ara, seria connectar 10, o el que sigui el valor de ID $ _SESSION és. I perquè ens permet ser una mica més dinàmic. No estem de codificació dura coses més. Estem estalviant informació en algun lloc i després podem utilitzar aquesta informació de nou per tipus de generalitzar el que volem fer, i acaba de plug-in i el canvi el comportament de la nostra pàgina basat en el que el número d'identificació de l'usuari en realitat és després d'haver iniciat la sessió. També és possible, però, que els seus resultats estableixen podria consistir en diverses files. En aquest cas, vostè té una sèrie de arrays-- una matriu de matrius associatives. I només ha de recórrer a través d'ell. I sabem la forma de repetició a través d'una matriu en PHP, oi? Així que aquí és probablement la més cosa complexa que hem vist fins ara. En realitat, s'integra tres idiomes junts. Aquí a vermell, això és una cosa d'HTML. Aparentment estic starting-- això és un fragment d'alguna cosa d'HTML que tinc. Estic començant un nou paràgraf que diu que les mares de Seinfeld de televisió. I a continuació, immediatament després Estic començant una taula. I després, després d'això, tenir una mica de PHP, oi? Tinc tot aquest codi PHP en aquest país. Pel que sembla, vaig a fer una consulta. I per fer la consulta, vaig a a utilitzar les mares Selecciona de les mares. Així que aquest es getting-- això és SQL. Així que el blau és SQL. El vermell que vam veure fa un segon estava HTML. I el verd aquí és PHP. Així que estic fent una consulta a la meva base de dades, estic seleccionar tots els mares en la taula de les mares. No només l'estrenyiment cap avall al particular fila, el que estic demanant a tots ells. Llavors puc comprovar si el resultat es no és igual als iguals falsa. Això és només la meva manera de comprovar espècie de si els resultats no és igual a null, que veuríem c per exemple. Bàsicament això és només comprovant fer Segur que en realitat té dades de nou. Perquè jo no vull començar a imprimir sortida de dades si no he tingut cap dada. Després, per a cada resultat com a resultat la foreach sintaxi de PHP, tot el que estic fent està imprimint mares $ resultat. Així que vaig a obtenir un conjunt de totes les mares de each-- és un conjunt de associativa arrays-- i estic imprimint cada un d'ells com la seva pròpia fila d'una taula. I això és molt bonic tot el que cal fer. Sé que hi ha una mica de poc passant aquí En aquest últim exemple, amb matrius de arrays-- matrius de matrius associatives. Però en realitat es limita a bullir en SQL per fer una consulta, en general la selecció després que ja hem posar la informació a la taula, i després simplement tirant d'ell. I això és ens tiri d'ella en aquest cas particular. Volem extreure tot l'individu mares de la taula mares. Tenim tot un conjunt d'ells, i nosaltres voler recórrer i imprimir cadascú. Així que de nou, això és probablement l'exemple més complicat que hem vist perquè estem barrejant de tres diferents idiomes junts, no? Un cop més, tenim HTML aquí en vermell, barrejat amb una mica de SQL aquí en blau, barrejat amb una mica de PHP en verd. Però tots ells juguen molt bé junts, és només és qüestió de desenvolupar bons hàbits de manera que vostè pot obtenir que treballin junts de la manera desitjada. I l'única manera de fer-ho realment tan és practicar, practicar i practicar. Sóc Doug Lloyd, això és CS50.