Grunnleggende om å jobbe med MySQL i PHP. Sende databasespørringer i PHP Koble til en MySQL-server

Grunnleggende om å jobbe med MySQL i PHP. Sende databasespørringer i PHP Koble til en MySQL-server

Jeg husker de gangene jeg fortsatt ikke visste hva det var mysql og søkte ofte etter slike artikler på Internett. Men av en eller annen grunn ble de sjelden funnet. Nå har jeg bestemt meg for å legge ut en slik at det er nyttige artikler om mysql Og php det er en til. Jeg skal prøve å skrive alt på et tilgjengelig språk.

komme i gang med mysql og php

Så først trenger vi en lokal server for å kunne kjøre php-skript og koble til databasen (heretter vil jeg kalle den DB, som betyr "database"). Hvis du ikke har en lokal server ennå, bør du først lese Installasjon og konfigurasjon lokal vert, og begynn deretter å studere databasen mysql og dets DBMS (databasestyringsverktøy).

Hvis du allerede har denne serveren, gjør du dette. Først vil jeg introdusere deg til DBMS PhpMyAdmin, lar den deg administrere (legge til, slette, endre) poster i databasen.

Dette er hovedsiden DBMS PhpMyAdmin. Herfra kan du opprette din egen database og lagre de nødvendige postene i den. Dette er veldig praktisk når du lager nettsider, siden informasjonen er strukturert og du veldig raskt kan få en hvilken som helst post fra databasen.

Som allerede nevnt, første del av artikkelen, introduksjon til mysql Og phpmyadmin. Jeg tror nå du forstår hva mysql er, og vi kan begynne å studere funksjonaliteten til phpmyadmin. For å komme i gang må vi lage selve databasen. Hun vil ha sitt eget navn, som vi så vil søke etter henne med.

Her er den generelle strukturen til databasen:

For å opprette en database, skriv inn et hvilket som helst navn (ikke kyrillisk!) for den fremtidige databasen i inndatafeltet under linjen "Opprett en ny database" (på hovedsiden til PhpMyAdmin). Jeg skal lage en database som heter "baza". Nå, etter databasestrukturdiagrammet, må vi lage en tabell. For å gjøre dette, etter å ha opprettet databasen, vil du ha følgende vindu:

Her lager jeg en tabell som heter brukere og 3 felter i den. Deretter vil phpmyadmin be oss om å angi strukturen for hvert felt:

Her i "Felt"-kolonnen må du angi navnet, i "Type" angir vi typen data som vil bli lagret der (INT er et tall, VARCHAR er en streng eller liten(!) tekst). I "Avansert" indikerer vi til feltet kalt "id" parameteren "auto_increament", som betyr at den vil øke hver gang du setter inn data, og vi setter den parameteren "Primærnøkkel" (sett en sirkel), dette betyr at i henhold til den første kolonnen kan vi identifisere feltet unikt.

"Identifiser feltet unikt" betyr at selv om for- og etternavnet er det samme, vil "id"-kolonnen ha forskjellige verdier (siden den automatisk økes med én hver gang).

Klikk nå på "Lagre". Dermed opprettet vi brukertabellen, der vi kan lagre for- og etternavn (det er ikke nødvendig å sette inn id, mysql vil gjøre alt for oss), i brukerdatabasen. Vi opprettet en tabell for å lagre poster. Hvordan sette dem inn der? Les nedenfor 😉

Velg "Sett inn" fra menyen og skriv de nødvendige verdiene i de nødvendige feltene. Nå hvordan slette eller endre verdier i mysql-databasen med PhpMyAdmin DBMS... For å slette, gå ganske enkelt til "Bla gjennom"-menyen og klikk på det røde krysset ved siden av oppføringen:

Og for å redigere, klikk på blyanten og erstatt de nødvendige feltene. Vel, dette er slutten på leksjonen. Nå kan du administrere mysql-databasen ved å bruke PhpMyAdmin. I neste leksjon skal jeg lære deg hvordan du lagrer, henter, sletter og oppdaterer data i databasen bruker php. Det er veldig praktisk og praktisk.

Arbeide med mysql-database fra php

Så først må du lære hvordan du kobler til en allerede opprettet database. For å gjøre dette, bruk følgende kode:

I koden ovenfor koblet jeg til localhost-serveren ved å bruke påloggingen rot som ikke krever passord (så vi spesifiserer det ikke). Etter å ha koblet til databasen, kan vi utføre alle operasjonene vi utførte i phpmyadmin DBMS. Det vil si å sette inn, slette, endre og hente ut ulike opplysninger. Nå punkt for punkt:

Sette inn poster i en SQL-database i php

$query="INSERT INTO `table` (`spesifiser felt`,`spesifiser felt`) VERDIER ("enhver verdi","enhver verdi""); $result=mysql_query($query); if($result==true) ( ​​ekko "Suksess!"; ) else ( ekko "Feil!
".mysql_error(); )

Det vil si at innsettingen utføres av INSERT-funksjonen. Hvis alt gikk bra, vil mysql returnere resultatet sant, eller på annen måte - usant.

Du kan spesifisere så mange felt du vil, det viktigste er at alle finnes i databasen. Det vil si at det for eksempel er en tabell der det er felt "navn", "etternavn" og "by". For å sette inn verdier i den bruker vi følgende kode:

$query="INSERT INTO `brukere` (`navn`,`etternavn`,`by`) VERDIER ("Ruslan","Huzin","Kokshetau""); $result=mysql_query($query); if($result==true) ( ​​ekko "Suksess!"; ) else ( ekko "Feil!
".mysql_error(); )

Sletting av poster fra SQL-database i php

Sletting utføres ved hjelp av SLETT-funksjonen. Koden for dette vil være noe sånt som dette:

$query="DELETE FROM `users` WHERE `name`="Ruslan" "; $result=mysql_query($query); if($result==true) ( ​​ekko "Suksess!"; ) else ( ekko "Feil!
".mysql_error(); )

Det vil si at vi vil slette fra brukertabellen alle rader (eller én) der navnekolonnen er lik Ruslan-verdien.

Endre verdier i MySQL-databasen i php

Vi kan også gjøre endringer i eksisterende oppføringer i tabellen. For eksempel må vi erstatte verdien av navnekolonnen i en rad der etternavnskolonnen har verdien Huzin. For å gjøre dette kjører vi følgende kode:

$query="OPPDATERING `brukere` SET `name`="mittnavn" WHERE `etternavn`="Huzin" "; $result=mysql_query($query); if($result==true) ( ​​ekko "Suksess!"; ) else ( ekko "Feil!
".mysql_error(); )

Hente verdier fra databasen

Nå kommer den morsomme delen. Siden vi skrev ned noe, burde vi få det tilbake, ikke sant? For eksempel må vi hente hele raden fra brukertabellen der navnekolonnen er lik Ruslan. For å gjøre dette trenger vi litt annen kode enn i de første eksemplene. Her er det:

$query="SELECT * FROM WHERE `name`="Ruslan" "; $result=mysql_query($query); if($result==true) ( ​​ekko "Suksess!"; ) else ( ekko "Feil!
".mysql_error(); ) $data=mysql_fetch_array($result); /* Nå lagrer variabelen data fra tabellen */

Her trengte vi en funksjon til for å skrive de valgte dataene til en variabel (array) i php. For å få tilgang til den valgte linjen, skriver vi slik:

$data["kolonnenavn"]

det vil si, for å få etternavnet fra den valgte linjen (der navnet var Ruslan), må vi skrive som utdata:

echo $data["etternavn"];

Og når du velger fra en tabell, skrev de SELECT * , denne stjernen betyr at du må velge alle kolonnene fra raden. Hvis vi for eksempel trenger å velge kun etternavn, skriver vi SELECT `etternavn`. Og for å velge flere rader fra tabellen samtidig, trenger du også en løkke for å vise dem. Dette er tilfellet hvis det for eksempel er flere rader med Ruslan-kolonnen. Her er koden:

$query="SELECT * FROM WHERE `name`="Ruslan" "; $result=mysql_query($query); while($data=mysql_fetch_array($result)) ( echo $data["navn"]."
".$data["etternavn"]."


"; }

Nå vil alle rader hvis navnkolonne er lik verdien Ruslan vises på skjermen.

Nå har du blitt kjent med de grunnleggende kontrollfunksjonene mysql database direkte fra php-skript.

DBMS MySQL er en av mange databaser som støttes i PHP. MySQL-systemet distribueres gratis og har tilstrekkelig kraft til å løse reelle problemer.

En kort introduksjon til MySQL

SQL er en forkortelse for ordene Strukturert spørrespråk, som står for Structured Query Language. Dette språket er et standardverktøy for tilgang til ulike databaser.

MySQL-systemet er en server som brukere på eksterne datamaskiner kan koble seg til.

For å jobbe med databaser er det praktisk å bruke verktøyet som er inkludert i webutviklersettet: Denwer phpMyAdmin. Her kan du opprette en ny database, opprette en ny tabell i den valgte databasen, fylle tabellen med data og legge til, slette og redigere data.

MySQL definerer tre grunnleggende datatyper: numerisk, datoklokkeslett og streng. Hver av disse kategoriene er delt inn i mange typer. De viktigste:


Hver kolonne inneholder andre spesifikasjoner etter datatypen:

TypeBeskrivelse
IKKE NULLAlle tabellrader må ha en verdi i dette attributtet. Hvis ikke spesifisert, kan feltet være tomt (NULL)
AUTO_INCREMENTEn spesiell MySQL-funksjon som kan brukes på numeriske kolonner. Hvis du lar dette feltet stå tomt når du setter inn rader i en tabell, genererer MySQL automatisk en unik ID-verdi. Denne verdien vil være én større enn den maksimale verdien som allerede finnes i kolonnen. Hver tabell kan ikke ha mer enn ett slikt felt. Kolonner med AUTO_INCREMENT må indekseres
PRIMÆR NØKKELKolonnen er hovednøkkelen for tabellen. Dataene i denne kolonnen må være unike. MySQL indekserer automatisk denne kolonnen
USIGNERTEtter en heltallstype betyr at verdien kan være enten positiv eller null
KOMMENTARTabellkolonnenavn

Opprette en ny MySQL-database LAG DATABASE.

OPPRETT DATABASE HVIS IKKE FINNES `base` STANDARD TEGNSETT cp1251 SAMLER cp1251_bin

Opprette en ny tabell utføres ved hjelp av SQL-kommando LAG BORD. For eksempel vil boktabellen for en bokhandel inneholde fem felt: ISBN, forfatter, tittel, pris og antall eksemplarer:

CREATE TABLE-bøker (ISBN CHAR(13) NOT NULL, PRIMARY KEY (ISBN), forfatter VARCHAR(30), tittel VARCHAR(60), pris FLOAT(4,2), mengde TINYINT USIGNERT); For å unngå en feilmelding hvis tabellen allerede eksisterer, må du endre den første linjen ved å legge til uttrykket "HVIS IKKE FINNES": LAG TABELL HVIS IKKE FINNES bøker ...

Å skape automatisk oppdateringsfelt med gjeldende dato av typen TIMESTAMP eller DATETIME, bruk følgende konstruksjon:

LAG TABELL t1 (ts TIMESTAMP STANDARD CURRENT_TIMESTAMP PÅ OPPDATERING CURRENT_TIMESTAMP, dt DATETIME STANDARD CURRENT_TIMESTAMP PÅ OPPDATERING CURRENT_TIMESTAMP);

Addisjon data inn i denne tabellen utføres ved hjelp av SQL-kommandoen SETT INN. For eksempel:

SETTE INN I bøker (ISBN, forfatter, tittel, pris, mengde) VERDIER ("5-8459-0184-7", "Zandstra Mat", "Master PHP4 på egen hånd om 24 timer", "129", "5") ;

For å hente data fra en tabell, bruk operatoren VELGE. Den henter data fra databasen ved å velge rader som samsvarer med et gitt søkekriterium. SELECT-setningen kommer med ganske mange alternativer og brukstilfeller.

* indikerer at alle felt er obligatoriske. For eksempel:

VELG * FRA bøker;

For bare å få tilgang til et spesifikt felt, må du spesifisere navnet i SELECT-setningen. For eksempel:

VELG forfatter, tittel, pris FRA bøker;

For å få tilgang til et undersett av rader i en tabell, må du spesifisere et utvalgskriterium som spesifiserer konstruksjonen HVOR. For å velge tilgjengelige rimelige bøker om PHP, må du for eksempel opprette en spørring:

VELG * FRA bøker HVOR pris % Matcher et hvilket som helst antall tegn, også null
_ Matcher nøyaktig ett tegn

For å sikre at radene som hentes av en spørring er oppført i en bestemt rekkefølge, brukes konstruksjonen BESTILL PÅ. For eksempel:

VELG * FRA bøker BESTILL ETTER pris;

Misligholde bestille sortering går i stigende rekkefølge. Du kan snu sorteringsrekkefølgen ved å bruke et nøkkelord DESC:

VELG * FRA bøker BESTILL ETTER pris DESK;

Sortere Det er også mulig for flere kolonner. I stedet for kolonnenavn kan du bruke serienumrene deres:

VELG * FRA bøker BESTILL ETTER 4, 2, 3;

For å endre verdiene som tidligere er registrert i tabellen, må du bruke kommandoen OPPDATERING. For eksempel ble prisen på alle bøkene økt med 10 %:

OPPDATERING bøker SET pris = pris * 1,1;

WHERE-leddet vil begrense UPDATE-operasjonen til visse rader. For eksempel:

OPPDATERING bøker SET pris = pris * 1,05 HVOR pris

For å fjerne rader fra databasen, bruk operatoren SLETT. Unødvendige rader spesifiseres ved hjelp av WHERE-leddet. For eksempel er noen bøker solgt:

SLETT FRA bøker HVOR mengde = 0;

Hvis du trenger å slette alle oppføringer

TRUNCATE TABLE tabellnavn

For å slette en tabell fullstendig bruk:

DROP TABLE tabellnavn

Koble PHP til MySQL-databasen

Etter å ha jobbet med phpMyAdmin for å lage databasen, kan du begynne å koble databasen til det eksterne webgrensesnittet.

For å få tilgang til en database fra nettet ved hjelp av PHP, må du ta følgende grunnleggende trinn:

  • Kobler til MySQL-serveren.
  • Velge en database.
  • Utføre en databasespørring:
    • addisjon;
    • sletting;
    • endre;
    • søk;
    • sortering.
  • Får resultatet av forespørselen.
  • Koble fra databasen.

For å koble til en databaseserver i PHP er det en funksjon mysql_connect(). Argumentene er datamaskinnavn, brukernavn og passord. Disse argumentene kan utelates. Som standard er datamaskinnavn = localhost , deretter er brukernavn og passord ikke nødvendig. Hvis PHP brukes i kombinasjon med Apache-serveren, kan du bruke funksjonen mysql_pconnect(). I dette tilfellet forsvinner ikke tilkoblingen til serveren etter at programmet avsluttes eller funksjonen kalles opp mysql_close(). Funksjoner mysql_connect() Og mysql_pconnect() returner tilkoblings-ID-en hvis alt var vellykket. For eksempel:

$link = mysql_pconnect(); if (!$link) die ("Kan ikke koble til MySQL");

Når tilkoblingen til MySQL-serveren er etablert, må du velge en database. For å gjøre dette, bruk funksjonen mysql_select_db(). Argumentet er databasenavnet. Funksjonen returnerer true hvis den angitte databasen eksisterer og kan nås. For eksempel:

$db = "eksempel"; mysql_select_db($db) or die("Kan ikke åpne $db");

For å legge til, slette, endre og velge data, må du konstruere og utføre en SQL-spørring. Det er en funksjon for dette i PHP mysql_query(). Argumentet: en spørringsstreng. Funksjonen returnerer forespørsels-IDen.

Eksempel 1

Legge til en oppføring i en tabell

Hver gang eksempel 1 utføres, vil en ny post bli lagt til tabellen som inneholder de samme dataene. Selvfølgelig er det fornuftig å legge til brukerangitte data til databasen.

Eksempel 2.1 viser et HTML-skjema for å legge til nye bøker i databasen.

Eksempel 2.1

HTML-skjema for å legge til nye bøker
ISBN
Forfatter
Navn
Pris
Mengde

Resultatene av å fylle ut dette skjemaet sendes til insert_book.php.

Eksempel 2.2

Program for å legge til nye bøker (filen insert_book.php) Gå tilbake og fullfør å skrive"); ) $isbn = trim ($_POST["isbn"]); $author = trim ($_POST["author"]); $title = trim ($_POST["tittel" ] ) ; $isbn = addslashes ($title = addslashes ($title) ; or die ("Kan ikke åpne $db"); $query = "INSERT INTO book VALUES ("" .$isbn."", "".$author. "", "".$title."", "" .floatval($_POST["pris"]).", "".intval($_POST["quantity"])."""; $result = mysql_query ($query if ($result) echo "The boken er lagt til databasen."; mysql_close ($link ?>);

I eksempel 2.2 behandles de angitte strengdataene av funksjonen addslashes(). Denne funksjonen legger til skråstrek før enkle anførselstegn ("), doble anførselstegn ("), skråstrek (\) og nullbyte. Faktum er at i henhold til kravene til databasespørringssystax, må slike symboler omsluttes av anførselstegn.

For å bestemme antall poster som et resultat av en spørring, bruk funksjonen mysql_num_rows().

Alle søkeresultatposter kan sees i en sløyfe. Før du gjør dette, bruk funksjonen mysql_fetch_ For hver post oppnås en assosiativ matrise.

Eksempel 3.1 viser et HTML-skjema for søk etter spesifikke bøker i en database.

Eksempel 3.1

HTML boksøkeskjema
Søker etter:

Hva ser vi etter:

Resultatene av å fylle ut dette skjemaet sendes til search_book.php.

Eksempel 3.2

Gå tilbake og fullfør å skrive"); $searchterm = addslashes ($searchterm); $link = mysql_pconnect(); if (!$link) die("Kan ikke koble til MySQL"); $db = "sample"; mysql_select_db ($db) or die("Kan ikke åpne $db"); $query = "VELG * FRA bøker WHERE " .$_POST["søketype"]." som "%".$searchterm."%""; $result = mysql_query ($query); $n = mysql_num_rows ($result); for ($i=0; $i<$n; $i++) { $row = mysql_fetch_array($result); echo "

".($i+1). $row["tittel"]. "



"; ) if ($n == 0) echo "Vi har ingenting å tilby. Beklager"; mysql_close($link); ?>

Alternativt alternativ

Boksøkeprogram (fil search_book.php) Gå tilbake og fullfør å skrive"); $searchterm = addslashes ($searchterm); mysql_connect() eller die ("Kan ikke koble til MySQL"); mysql_select_db ("sample") eller die ("Kan ikke åpne databasen") ; $ result = mysql_query("SELECT * FROM books WHERE ".$_POST["searchtype"].." som "%".$searchterm."%"" while($row = mysql_fetch_array($result)) (); ekko"

".($i++) . $row["tittel"]."
"; echo "Forfatter: ".$row["forfatter"]."
"; echo "ISBN: ".$row["ISBN"]."
"; echo "Pris: ".$row["pris"]."
"; echo "Quantity: ".$row["quantity"]."

"; ) if ($i == 1) echo "Vi har ingenting å tilby. Beklager"; mysql_close(); ?>

Så hvordan fungerer webdatabasearkitektur:

  1. Brukerens nettleser sender ut en HTTP-forespørsel for en bestemt nettside.
  2. For eksempel søker en bruker som bruker et HTML-skjema etter alle bøker om PHP. Skjemabehandlingssiden heter search_book.php.
  3. Nettserveren mottar en forespørsel om search_book.php, henter denne filen og sender den videre til PHP-motoren for behandling.
  4. PHP kobler til MySQL-serveren og sender forespørselen.
  5. Serveren godtar en databaseforespørsel, behandler den og sender resultatet (en liste over bøker) tilbake til PHP-motoren.
  6. PHP-motoren fullfører kjøringen av skriptet og formaterer forespørselsresultatet i HTML. Etter dette returneres resultatet i form av HTML til webserveren.

Webserveren videresender HTML-en til nettleseren, og brukeren kan se den forespurte listen over bøker.

Bruke transaksjonsmekanismen

Bruke transaksjonsmekanismen som et eksempel på hvordan du overfører penger fra en person til en annen

If(mysql_query ("BEGIN") && mysql_query ("OPPDATERE penger SET amt = amt - 6 WHERE navn = "Eve") && mysql_query ("OPPDATERE penger SET amt = amt + 6 WHERE navn = "Ida") && mysql_query ("COMMIT"))( echo "Vellykket"; )else( mysql_query ("ROLLBACK"); ekko "Ikke vellykket"; )

VELG ... FOR OPPDATERING

Hvis du kjører flere prosesser som lager utvalgte spørringer på samme tabell, kan de velge den samme posten samtidig.

For å unngå den ovennevnte situasjonen, er det nødvendig å utføre ikke bare en SELECT-spørring, men dens utvidede versjon, som mange ikke engang er klar over: VELG ... FOR OPPDATERING.

Det er imidlertid ikke så enkelt. Du må oppfylle noen flere betingelser. Først må tabellen din være basert på InnoDB-arkitekturen.

Ellers vil blokkeringen rett og slett ikke fungere. For det andre, før du utfører valget, må du deaktivere automatisk forespørsel.

De. med andre ord, automatisk utførelse av forespørselen. Etter at du har spesifisert UPDATE-forespørselen, må du få tilgang til databasen igjen og foreta endringene ved å bruke COMMIT-kommandoen:


JOBBER MED EN MySQL-DATABASE MED PHP-VERKTØY

Foredrag. Utarbeidet av Prokhorov V.S.

1. KOBLE PHP-SCENARIER med MySQL-tabeller

La oss se på de mest brukte funksjonene som lar deg jobbe med en MySQL-database ved hjelp av PHP.Når PHP og MySQL samhandler, samhandler programmet med DBMS gjennom et sett med funksjoner.

1.1 Tilkobling til serveren. Funksjon

mysql_connect

Før du arbeider med databasen, må du etablere en nettverksforbindelse med den, samt autorisere brukeren. Mysql_connect()-funksjonen brukes til dette.

ressurs mysql_connect(]])

Denne funksjonen etablerer en nettverkstilkobling til MySQL-databasen som ligger på vertsserveren $server (som standard er dette localhost, dvs. gjeldende datamaskin) og returnerer identifikatoren til den åpne tilkoblingen. Alt videre arbeid utføres med denne identifikatoren. Alle andre funksjoner som tar denne identifikatoren (håndtaket) som et argument vil identifisere den valgte databasen unikt. Når du registrerer deg, spesifiser brukernavnet $brukernavn og passord $passord (som standard brukernavnet som gjeldende prosess kjører fra - ved feilsøking av skript: root og et tomt passord):

$dbpasswd = ""; //Passord

");

//Vis en advarsel

ekko("Variablene $dblocation, $dbuser og $dbpasswd lagrer servernavnet, brukernavnet og passordet.

1.2 Kobling fra serveren. Funksjon

mysql_close

Tilkoblingen til MySQL-serveren vil automatisk lukkes når skriptet fullføres, eller når mysql_close-funksjonen kalles

bool mysql_close()

Denne funksjonen lukker forbindelsen til MySQL-serveren, og returnerer true hvis operasjonen er vellykket og ellers falsk. Funksjonen tar som et argument databasetilkoblingshåndtaket som returneres av mysql_connect-funksjonen.

ressurs mysql_connect(]])

$dblocation = "localhost"; //Servernavn

$dbuser = "root"; //Brukernavn

//Koble til databaseserveren

if (!$dbcnx) //Hvis beskrivelsen er 0, opprettes ikke forbindelsen

Denne funksjonen etablerer en nettverkstilkobling til MySQL-databasen som ligger på vertsserveren $server (som standard er dette localhost, dvs. gjeldende datamaskin) og returnerer identifikatoren til den åpne tilkoblingen. Alt videre arbeid utføres med denne identifikatoren. Alle andre funksjoner som tar denne identifikatoren (håndtaket) som et argument vil identifisere den valgte databasen unikt. Når du registrerer deg, spesifiser brukernavnet $brukernavn og passord $passord (som standard brukernavnet som gjeldende prosess kjører fra - ved feilsøking av skript: root og et tomt passord):

$dbpasswd = ""; //Passord

Databaseserveren er for øyeblikket utilgjengelig, så siden kan ikke vises på riktig måte.");

if (mysql_close($dbcnx)) //lukk tilkoblingen

echo("Databaseforbindelse avsluttet");

echo("Vi klarte ikke å fullføre tilkoblingen");

1.3 Opprette en database. CREATE DATABASE-funksjon

Kommandoen - opprett en database er kun tilgjengelig for serveradministratoren, og på de fleste vertssider kan den ikke utføres:

CREATE DATABASEDatabaseName

Oppretter en ny database med navnet DatabaseName.

Et eksempel på arbeid med denne funksjonen:

@mysql_query("LAG DATABASE $dbname");

Det anbefales å bruke apostrof (“SQL – kommando”) overalt som skilletegn for linjer som inneholder SQL – kommandoer. Dette sikrer at ingen $-variabel blir interpolert ved et uhell (dvs. erstattet av verdien), og øker skriptsikkerheten.

Kommandoen CREATE DATABASE databaseoppretting er kun tilgjengelig for superbrukeren, og på de fleste vertssider er det umulig for en enkel bruker å utføre den. Den er kun tilgjengelig for serveradministratoren.

For eksperimenter, la oss lage en testbasedatabase ved å utføre en SQL-spørring fra kommandolinjen. For å gjøre dette, må du logge på MySQL og skrive inn på MySQL-kommandolinjen:

mysql> lage database testbase;

Etter dette bør du skrive:

mysql>bruk testbase;

Database opprettet:


1.4 Velge en database. Funksjonmysql_select_db

Før vi sender den første forespørselen til MySQL-serveren, må vi angi hvilken database vi skal jobbe med. Mysql_select_db-funksjonen er designet for dette:

bool mysql_select_db(streng $databasenavn [,ressurs $link_identifier])

Den varsler PHP om at fremtidige operasjoner på $link_identifier-tilkoblingen vil bruke $database_name-databasen.

Å bruke denne funksjonen tilsvarer å kalle opp kommandoen use i en SQL-spørring, det vil si at mysql_select_db-funksjonen velger en database for videre arbeid, og alle påfølgende SQL-spørringer blir brukt på den valgte databasen. Funksjonen tar som argumenter navnet på den valgte databasen databasenavn og tilkoblingsbeskrivelseressursen. Funksjonen returnerer true hvis operasjonen var vellykket og usann ellers:

//Databasetilkoblingskode

if (! @mysql_select_db($dbname, $dbcnx))

Denne funksjonen etablerer en nettverkstilkobling til MySQL-databasen som ligger på vertsserveren $server (som standard er dette localhost, dvs. gjeldende datamaskin) og returnerer identifikatoren til den åpne tilkoblingen. Alt videre arbeid utføres med denne identifikatoren. Alle andre funksjoner som tar denne identifikatoren (håndtaket) som et argument vil identifisere den valgte databasen unikt. Når du registrerer deg, spesifiser brukernavnet $brukernavn og passord $passord (som standard brukernavnet som gjeldende prosess kjører fra - ved feilsøking av skript: root og et tomt passord):

$dbpasswd = ""; //Passord

Databasen er for øyeblikket utilgjengelig, så siden kan ikke vises på riktig måte.");

1.5 Feilhåndtering

Hvis det oppstår feil mens du arbeider med MySQL (for eksempel er parentesene i spørringen ikke balansert eller det ikke er nok parametere), kan feilmeldingen og nummeret fås ved å bruke de to funksjonene beskrevet nedenfor.

Det er viktig å bruke disse funksjonene forsiktig og raskt, fordi ellers kan feilsøking av skript bli vanskeligere.

● Funksjon:

int mysql_errno()

returnerer nummeret på den sist rapporterte feilen. Tilkoblingsidentifikatoren $link_identifier kan utelates hvis bare én tilkobling ble opprettet under kjøringen av skriptet.

● Funksjon:

streng mysql_error()

returnerer ikke et tall, men en streng som inneholder teksten i feilmeldingen. Det er praktisk å bruke til feilsøkingsformål. Vanligvis brukes mysql_error sammen med eller die()-konstruksjonen, for eksempel:

@mysql_connect("localhost", "bruker", "passord")

or die("Feil ved tilkobling til databasen: ".mysql_error());

@-operatøren tjener som vanlig til å undertrykke standardadvarselen som kan oppstå i tilfelle en feil.

I nyere versjoner av PHP logges ikke advarsler i MySQL-funksjoner som standard.

1.6 Automatisering av tilkobling til MySQL. Fil (config.php)

Vanligvis er det flere skript på et nettsted som trenger tilgang til den samme databasen.

Det anbefales å skille koden som er ansvarlig for å koble til MySQL inn i en egen fil, og deretter koble den til de nødvendige skriptene ved å bruke include-funksjonen.

Det er fornuftig å plassere funksjonene for å koble til, velge og lage en database i samme fil (config.php) hvor variablene med servernavn $dblocation, brukernavn $dbuser, passord $dbpasswd og databasenavn $dbname er deklarert:

config.php-oppføring:

//config.php-koden til filen som inneholder parametere for å koble til serveren og velge en database

// sender ut tilkoblingsfeilmeldinger til nettleseren

bool mysql_close()

$dbname = "sett inn databasenavn" //Databasenavn: opprettes eller eksisterer

$dbuser = "root"; //Database brukernavn

ressurs mysql_connect(]])

$dblocation = "localhost"; //Servernavn

$dbuser = "root"; //Brukernavn

$dbcnx=@mysql_connect($dblocation,$dbuser,$dbpasswd);

if (!$dbcnx) //Hvis beskrivelsen er 0, er tilkoblingen til databaseserveren ikke etablert

Denne funksjonen etablerer en nettverkstilkobling til MySQL-databasen som ligger på vertsserveren $server (som standard er dette localhost, dvs. gjeldende datamaskin) og returnerer identifikatoren til den åpne tilkoblingen. Alt videre arbeid utføres med denne identifikatoren. Alle andre funksjoner som tar denne identifikatoren (håndtaket) som et argument vil identifisere den valgte databasen unikt. Når du registrerer deg, spesifiser brukernavnet $brukernavn og passord $passord (som standard brukernavnet som gjeldende prosess kjører fra - ved feilsøking av skript: root og et tomt passord):

$dbpasswd = ""; //Passord

Databaseserveren er for øyeblikket utilgjengelig, så siden kan ikke vises på riktig måte.

");

//Opprett databasen $dbname - bare en superbruker kan gjøre dette

//Hvis databasen allerede eksisterer, vil det være en ikke-fatal feil

@mysql_query("LAG DATABASE hvis den ikke eksisterer $dbname');

//Koblingskode til databasen: vi gjør et entydig valg av en nyopprettet database eller en allerede eksisterende database

$dbuser = "root"; //Brukernavn

if(!@mysql_select_db($dbname, $dbcnx)) //Hvis beskrivelsen er 0, er tilkoblingen til databasen ikke etablert

Denne funksjonen etablerer en nettverkstilkobling til MySQL-databasen som ligger på vertsserveren $server (som standard er dette localhost, dvs. gjeldende datamaskin) og returnerer identifikatoren til den åpne tilkoblingen. Alt videre arbeid utføres med denne identifikatoren. Alle andre funksjoner som tar denne identifikatoren (håndtaket) som et argument vil identifisere den valgte databasen unikt. Når du registrerer deg, spesifiser brukernavnet $brukernavn og passord $passord (som standard brukernavnet som gjeldende prosess kjører fra - ved feilsøking av skript: root og et tomt passord):

$dbpasswd = ""; //Passord

Databasen er for øyeblikket utilgjengelig, så siden kan ikke vises på riktig måte.

");

//Liten hjelpefunksjon som skriver ut en melding

//feilmelding i tilfelle databasespørringsfeil

funksjon puterror($melding)

ekko("");


2. UTFØRELSE AV DATABASESPØRRINGER

2.1 Opprette en tabell. FunksjonLAG TABELL:

LAG TABELL Tabellnavn (feltnavntype, feltnavntype,)

Denne kommandoen oppretter en ny tabell i databasen med kolonner (felt) definert av deres navn (FieldName) og spesifiserte typer. Etter å ha opprettet tabellen, kan du legge til poster i den som består av feltene som er oppført i denne kommandoen.

Oppføring test_11.php. Et program som lager en ny tabell i en database:

inkludere "config.php";//Koble til serveren og velg en database

mysql_query("LAG TABELL hvis det ikke finnes personer

ID INT AUTO_INCREMENT PRIMÆR NØKKEL,

eller die("MySQL-feil: ".mysql_error());


Dette skriptet oppretter et nytt bord med to felt. Det første feltet har typen INT (heltall) og navne-id. Den andre er TEXT-typen (tekststreng) og navnenavnet.

Hvis tabellen eksisterer, vil eller die()-konstruksjonen fungere.

Den valgfrie if not exists-klausulen, når den er spesifisert, forteller MySQL-serveren at den ikke skal generere en feilmelding hvis en tabell med det angitte navnet allerede eksisterer i databasen.

For å få mest mulig ut av MySQL-databasen din, er det viktig å forstå hvordan du kobler fra et tilpasset PHP-program til en MySQL-database.

Denne opplæringen beskriver følgende tre metoder sammen med et tilsvarende PHP-eksempelprogram som vil forklare hvordan du kobler til ved hjelp av PHP til en database.

  • Koble til med Mysqli-utvidelsen (anbefalt)
  • Koble til med PUD (anbefalt)
  • Koble til med tradisjonelle eldre mysql_-funksjoner (foreldet)

For å gjøre dette må du installere PHP-MySQL-pakken.

Basert på RedHat-distribusjon inkludert , bruk yum til å installere PHP-MySQL som vist nedenfor.

Yum installer php-mysql

Avhengig av systemet ditt, vil vi installere eller oppdatere følgende avhengigheter ovenfor:

  • php-cli
  • php-vanlig
  • php-pdo
  • php-pgsql

Når alt er installert, vil phpinfo-siden vise MySQL-modulen som vist nedenfor:

For alle eksemplene nedenfor vil vi koble til en MySQL-database som allerede eksisterer. Hvis du er ny på MySQL, er dette et bra sted å begynne: .

Merk: Alt som er beskrevet her vil også fungere med MariaDB, akkurat som det fungerer med MySQL.

1. Tilkobling i PHP med Mysqli-utvidelsen

MySQLi står for MySQL Improved.

Vær oppmerksom på at på de fleste distribusjoner (f.eks. CentOS), er PHP-MySQLi allerede en del av PHP-MySQL-pakken. På denne måten trenger du ikke å søke etter og installere PHP-MySQLi-pakken. Alt du trenger å gjøre er å installere PHP-MySQL-pakken for å få en fungerende Mysqli-utvidelse på systemet ditt.

Lag følgende mysqli.php-fil i DocumentRoot i Apache:

connect_error) ( die("Feil: Kan ikke koble til: " . $conn->connect_error); ) echo "Kobler til databasen.
"; $result = $conn->query("VELG navn FRA ansatt"); ekko "Antall rader: $result->antall_rader"; $result->close(); $conn->close(); ?>

I ovenstående:

  • MySQLi – Denne funksjonen vil starte en ny tilkobling ved hjelp av Mysqli-utvidelsen. Denne funksjonen tar fire argumenter:
    1. Vertsnavn der MySQL-databasen kjører
    2. Brukernavn for MySQL-tilkobling
    3. Mysql brukerpassord
    4. MySQL-database å koble til.
  • Spørringsfunksjon – Bruk denne til å spesifisere MySQL-spørringen din. I dette eksemplet velger vi navnekolonnen fra ansattdatabasen.
  • Til slutt viser vi antall rader valgt ved hjelp av num_rows-variabelen. Vi lukker også forbindelsen som vist ovenfor.

Koble til databasen. Antall linjer: 4

Merk: Hvis du prøver å koble til en ekstern MySQL-database, kan du gjøre dette for å unngå feilen for vertstilkobling nektet: Hvordan tillate en MySQL-klient å koble til en ekstern MySQL-server.

2. Koble til med PHP til MySQL med PDO-utvidelse

PDO står for PHP Data Objects.

PDO_MYSQL implementerer PDO-grensesnittet levert av PHP for å koble et program til en MySQL-database.

På de fleste Linux-distribusjoner (som CentOS og RedHat) er PHP-PDO-pakken allerede inkludert i PHP-MySQL-pakken. På denne måten trenger du ikke å søke etter og installere PHP-PDO-pakken. Alt du trenger å gjøre er å installere PHP-MySQL-pakken for å få en fungerende PDO_MYSQL PHP-utvidelse på systemet ditt.

Lag følgende MySQL-pdo.php-fil i din Apache DocumentRoot:

setAttribute(PUD::ATTR_ERRMODE, PUD::ERRMODE_EXCEPTION);
echo "Kobler til databasen.
"; $sql = "VELG navn FRA ansatt"; skriv ut "Ansattnavn:
"; ) $conn = null; ) catch(PDOException $err) ( echo "Feil: Kan ikke koble til: " . $err->getMessage(); ) ?>

I ovenstående:

  • ny PUD – Vil opprette et nytt PUD-objekt som tar følgende tre argumenter:
    1. MySQL-tilkoblingsstreng: vil være i formatet "mysql:host=$vertsnavn;dbnavn=$dbnavn". I eksemplet ovenfor kjører databasen på localhost og vi kobler til andreyex-databasen.
    2. Brukernavn for å koble til MySQL.
    3. Passord for mysql-bruker.
  • $sql-variabel - Oppretter SQL-spørringen du vil kjøre. I dette eksemplet velger vi navnekolonnen fra ansatttabellen.
  • query($sql) – her utfører vi SQL-spørringen vi nettopp opprettet.
  • foreach – Det er her vi kjører gjennom kommandoene ovenfor og lagrer dem i $string-variabelen, og så viser vi dem ved å bruke print-kommandoen.
  • I MySQL PDO, for å lukke en tilkobling, tilbakestill $conn-variabelen til null.

Når du ringer mysqli.php fra nettleseren din, vil du se følgende utdata, som indikerer at PHP var i stand til å koble til MySQL-databasen og hente dataene.

Koble til databasen. Ansatt navn: siteslan Maria Oleg

3. Tilkobling i PHP ved hjelp av mysql_-funksjoner (utdatert)

Bruk denne metoden bare hvis du bruker en eldre versjon av PHP og av en eller annen grunn ikke kan oppgradere til den nye versjonen.

Dette er en eldre PHP 5.5-utvidelse. Men fra og med PHP 7.0-versjonen vil dette ikke fungere siden det ble fjernet.

Fra og med PHP 5.5, når du bruker disse funksjonene, vil de generere en E_DEPRECATED-feil.

Lag følgende MySQL-legacy.php-fil under Apache DocumentRoot:

"; $result = mysql_query("VELG navn FRA ansatt"); $row = mysql_fetch_row($result); echo "Ansatt 1: ", $row, "
\n"; mysql_close($conn); ?>

I ovenstående:

  • Mysql_connect-funksjonen tar tre argumenter: 1) vertsnavnet der MySQL-databasen kjører, 2) brukernavnet for å koble til MySQL, 3) passordet for MySQL-brukeren. Her kobler vi til MySQL-databasen, som kjører på den lokale serveren, ved å bruke root-brukernavnet og passordet.
  • mysql_select_db-funksjonen – Som navnet antyder, vil den velge databasen du vil koble til. Dette tilsvarer kommandoen "bruk". I dette eksemplet kobler vi til andreyex-databasen.
  • mysql_query-funksjon – Bruk denne til å spesifisere MySQL-spørringen din. I dette eksemplet velger vi navnekolonnen fra ansattdatabasen.
  • mysql_fetch_row - Bruk denne funksjonen til å hente rader fra SQL-spørringen vi nettopp opprettet.
  • Lukk til slutt tilkoblingen ved å bruke mysql_close-kommandoen som vist ovenfor.

Når du kaller MySQL-legacy.php fra nettleseren din, vil du se følgende utdata, som indikerer at PHP var i stand til å koble til MySQL-databasen og hente dataene.

Koble til databasen. Ansatt 1: AndreyEx

Bruker php...

Å skape en sammenheng på forskjellige måter:

1) den gammeldagse måten å koble til MySQL på:

$conn=mysql_connect($db_vertsnavn, $db_brukernavn, $db_passord) eller dø ("Ingen tilkobling til serveren");
mysql_select_db($db_database,$conn) eller die ("Nei, det var ikke mulig å koble til databasen");

Forklaringer av variablene nedenfor.

Følgende funksjoner brukes:

  • mysql_connect()- å koble til serveren;
  • mysql_select_db()- å koble til databasen;

Samtidig sjekker vi hele tiden for feil på denne måten: eller dør ("Feilen er slik og slik"); - oversatt til eller dø med en slik og en feil - for umiddelbart å finne hvor feilen er.

config.php

// variabler for å koble til databasen
$host = "localhost"; /vert
$brukernavn = "root"; // passord for å koble til databasen
$password = ""; // passord for å koble til databasen - på den lokale datamaskinen kan den være tom.
$database_name = "min-dolgi"; // databasenavn

// gammel måte å koble til databasen på
mysql_connect($vert, $brukernavn, $passord) eller die("Kan ikke koble til opprette tilkobling");

// velg databasen. Hvis det er en feil, skriv ut
mysql_select_db($database_name) eller die(mysql_error());

index.php

require_once "config.php";


$result = mysql_query("VELG navn, penger FRA Dolg BESTILL ETTER Money DESC LIMIT 5") eller die(mysql_error());



";


while ($row = mysql_fetch_assoc($result)) (
";
}


mysql_free_result($result);

// Lukk tilkoblingen
mysql_close();

2) En mer progressiv prosedyrestil - koble til databasen ved hjelp av mysqli:

Denne metoden:

  1. mer praktisk;
  2. opptil 40 ganger raskere;
  3. økt sikkerhet;
  4. det er nye funksjoner og funksjoner;

Et eksempel på å koble til en database i PHP med et utvalg fra en tabell

config.php

// tilkoblinger til databasen
$link = mysqli_connect("localhost", "brukernavn", "passord", "navn-database"); // her legger vi inn dataene dine direkte: brukernavn, passord og databasenavn, det første feltet er vanligvis localhost

// utgangstilkoblingsfeil
if (!$link) (
echo "Feil ved tilkobling til databasen. Feilkode: " . mysqli_connect_error();
gå;
}

Vennligst merk - mysqli brukes overalt, ikke mysql!!!

index.php

require_once "config.php";

// Utfør forespørselen. Hvis det er en feil, viser vi den
if ($result = mysqli_query($link,"VELG Navn, Penger FRA Gjeldsordre VED Money DESC LIMIT 5")) (

Echo "Hvem skylder jeg i synkende rekkefølge:

";

// Henter søkeresultater
while ($row = mysqli_fetch_assoc($result)) (
echo $row["Navn"] . "med gjeld". $row["Penger"] . " rubler.
";
}

// frigjør brukt minne
mysqli_free_result($resultat);

// Lukk tilkoblingen
mysqli_close($link);
}

Som du kan se, har noen punkter endret seg (i kursiv).

3) Objektorientert metode for å koble til en MySQL-database - ved hjelp av metoder og klasser:

Ulemper: Mer kompleks og mindre utsatt for feil.

Fordeler: korthet og bekvemmelighet for erfarne programmerere.

$conn = new mysqli($db_vertsnavn, $db_brukernavn, $db_passord, $db_database);
if($conn->connect_errno)(
die($conn->connect_error);
) else (ekko "Forbindelsen til databasen ble etablert";)

her er i prinsippet alt intuitivt:

  • $db_vertsnavn er vert(for det meste lokalvert),
  • $db_database - db navn;
  • $db_username og $db_password - henholdsvis brukernavn og passord!

Et eksempel på tilkobling til en database i php OOP-stil med sampling fra en tabell

config.php

// tilkoblinger til databasen
$mysqli = new mysqli("localhost", "brukernavn", "passord", "navn-database"); // her legger vi inn dataene dine direkte: brukernavn, passord og databasenavn, det første feltet er vanligvis localhost

// utgangstilkoblingsfeil
if ($mysqli->connect_error) (
die ("DB-tilkoblingsfeil: (" . $mysqli->connect_errno . ") " . mysqli_connect_error) ;
}

Vennligst merk - mysqli brukes overalt, ikke mysql!!! og i motsetning til forrige metode, vises pilene "->", som indikerer at dette er en OOP-stil.

index.php

require_once "config.php";

// Utfør forespørselen. Hvis det er en feil, viser vi den
if ($resultat = $ mysqli->spørring("SELECT Name, Money FROM Debt ORDER BY Money DESC LIMIT 5")) (

Echo "Hvem skylder jeg i synkende rekkefølge:

";

// Henter søkeresultater
while ($row = $result-> hente_assoc()) {
echo $row["Navn"] . "med gjeld". $row["Penger"] . " rubler.
";
}

// frigjør brukt minne
$resultat->lukk();

// Lukk tilkoblingen
$mysqli->lukk();
}

Din oppgave er å finne forskjellene.

4) Kommunikasjon med databasen ved hjelp av PUD:

Når du kobler til en MySQL-database, brukes forberedte uttrykk (ved hjelp av prepare-metoden) og som et resultat, større sikkerhet og kraftig øker ytelsen.

konfigurasjonsfil fra forrige metode! - det samme

index.php

// PUD-stil for kommunikasjon med MySQL
if ($stmt = $mysqli->prepare("VELG Navn, Voney FRA Dolg BESTILL ETTER Penger< ? LIMIT 5")) {

$stmt->bind_param("i", $summa);
$summa = 100 000;

//start utførelse
$stmt->execute();

// Erklære variabler for forberedte verdier
$stmt->bind_result($col1, $col2);

Echo "Hvem skylder jeg i synkende rekkefølge:

";

// Henter søkeresultater
while ($stmt->fetch()) (
ekko $col1 . "med gjeld". $col2 . " rubler.
";
}

// frigjør brukt minne
$stmt->lukk();

// Lukk tilkoblingen
$mysqli->close();

Som du kan se, er dette mye mer komplisert, og du må studere PUD - dette er et eget emne.

visninger