Vil du lære at forbinde PHP til MySQL og udføre forskellige typer databaseoperationer? I denne artikel vil vi gøre netop det - vi vil diskutere MySQL-databaseforbindelse i PHP.
PHP giver forskellige måder at forbinde PHP til en MySQL-databaseserver. Indtil PHP 5.5 var en af de mest populære måder med MySQL-udvidelsen - det gav en "proceduremæssig" måde at oprette forbindelse til MySQL-serveren på. Denne udvidelse er dog forældet fra og med PHP 5.5, så det vil vi ikke diskutere.
I øjeblikket er dine to valgmuligheder PDO og MySQLi.
PDO-udvidelsen (PHP Data Objects) understøtter forskellige typer af underliggende databaseservere sammen med MySQL-serveren. Og dermed er den bærbar, hvis du beslutter dig for at bytte den underliggende databaseserver på et hvilket som helst tidspunkt i fremtiden.
På den anden side er MySQLi-udvidelsen specifik for MySQL-serveren og giver bedre hastighed og ydeevne. MySQLi-udvidelsen kan også være lidt lettere at forstå i starten, da den lader dig skrive SQL-forespørgsler direkte. Hvis du har arbejdet med SQL-databaser før, vil dette være meget velkendt. PDO-udvidelsen skaber imidlertid en kraftfuld mapping fra SQL-databasen til din PHP-kode og lader dig udføre en masse databaseoperationer uden at skulle kende detaljerne i SQL eller databasen. I det lange løb og for større projekter kan dette spare en masse kodnings- og fejlfindingsindsats.
I dette indlæg vil jeg bruge MySQLi-udvidelsen. Men du kan lære mere om PDO-udvidelsen her på Envato Tuts+.
- PHPByg hurtigt en PHP CRUD-grænseflade med PDO Advanced CRUD Generator ToolSajal Soni
Vi vil dække følgende emner i denne artikel:
- oprettelse af en MySQL-forbindelse
- indsættelse, opdatering og sletning af poster
- henter poster
Bedste PHP-databasescripts på CodeCanyon
I dette indlæg vil jeg vise dig, hvordan du laver en bare-metal-forbindelse til en MySQL-database fra PHP. Dette er en vigtig færdighed at have, men hvis du vil spare tid på dit næste projekt, vil du måske opgradere til et professionelt databasescript. Dette vil spare tid og gøre dit arbejde lettere.
Udforsk de bedste og mest nyttige PHP-databasescripts, der nogensinde er oprettet på CodeCanyon. Med en billig engangsbetaling kan du købe disse højkvalitets WordPress-temaer og forbedre din hjemmesideoplevelse for dig og dine besøgende.
Her er nogle af de bedste PHP-databasescripts, der er tilgængelige på CodeCanyon for 2020.
- PHP-sammenligning af PHP-databaseabstraktionslag og CRUD-plugins Sajal Soni
Opret en MySQL-forbindelse
I dette afsnit vil jeg vise dig, hvordan du kan oprette forbindelse til MySQL-serveren fra dit PHP-script og oprette et forbindelsesobjekt. Senere vil dette forbindelsesobjekt blive brugt til at køre forespørgsler, hente output og manipulere databaseposterne. Som vi diskuterede tidligere, vil vi bruge PHP MySQLi-udvidelsen til denne artikel.
MySQLi-udvidelsen giver to forskellige måder at udføre databaseoperationer på. Du kan bruge det enten på den objektorienterede måde eller den proceduremæssige måde, men da denne tutorial er rettet mod begyndere, vil jeg holde mig til den proceduremæssige måde. Hvis du er interesseret i at se nogle objektorienterede uddrag, kan du pinge mig i kommentarfeltet nedenfor, og jeg vil med glæde give dem.
For at starte skal du gå videre og oprette db_connect.php fil under din dokumentrod med følgende indhold.
<?php $mysqli_link = mysqli_connect("{HOST_NAME}", "{DATABASE_USERNAME}", "{DATABASE_PASSWORD}", "{DATABASE_NAME}"); if (mysqli_connect_errno()) { printf("MySQL connection failed with the error: %s", mysqli_connect_error()); exit; }
Bemærk, at jeg har brugt pladsholdere i mysqli_connect
funktion – du skal erstatte disse med faktiske værdier.
Lad os gennemgå hver pladsholder for at se, hvad den står for.
{HOST_NAME}
:Dette repræsenterer din MySQL-servers værtsnavn eller IP-adresse. Hvis du har installeret MySQL-serveren på det samme system sammen med PHP, skal du brugelocalhost
eller127.0.0.1
. På den anden side, hvis du bruger en MySQL-server, som hostes eksternt, kan du bruge det tilsvarende værtsnavn eller IP-adresse.{DATABASE_USERNAME}
:Dette repræsenterer brugernavnet på din MySQL-bruger. Grundlæggende er dette brugernavnet, som du bruger til at oprette forbindelse til din MySQL-server.{DATABASE_PASSWORD}
:Dette repræsenterer adgangskoden til din MySQL-bruger. Igen, dette er adgangskoden, som du bruger til at oprette forbindelse til din MySQL-server sammen med MySQL-brugernavnet.{DATABASE_NAME}
:Dette er navnet på den MySQL-database, som du vil oprette forbindelse til. Når forbindelsen er oprettet, vil du forespørge denne database for yderligere handlinger.
Gå videre og udskift disse pladsholdere med faktiske værdier. I mit tilfælde har jeg installeret MySQL-serveren lokalt, og jeg har en MySQL-bruger med tutsplus-demo-user som MySQL-brugernavnet og tutsplus-demo-password som MySQL-adgangskoden. Og dermed ser ovenstående eksempel således ud:
<?php $mysqli_link = mysqli_connect("localhost", "tutsplus-demo-user", "tutsplus-demo-password", "tutsplus-demo-database"); if (mysqli_connect_errno()) { printf("MySQL connection failed with the error: %s", mysqli_connect_error()); exit; }
Hvis du kører dette eksempel, skal det oprette et databaseforbindelseslink og tildele det til $mysqli_link
variabel, som vi senere vil bruge til at udføre forskellige typer databaseoperationer.
På den anden side, hvis der er problemer med at konfigurere forbindelsen, skal mysqli_connect_errno
funktion vil returnere en fejlkode og mysqli_connect_error
funktionen vil vise den faktiske fejl. I ovenstående eksempel har vi brugt det til fejlfindingsformål.
Nu har vi en vellykket forbindelse til MySQL-serveren, og vi vil se, hvordan vi bruger den til at udføre forskellige typer forespørgsler fra næste afsnit og fremefter.
Sådan indsætter du poster
I det foregående afsnit diskuterede vi, hvordan man bruger mysqli_connect
funktion til at oprette en databaseforbindelse med MySQL-serveren. I dette afsnit vil vi gå videre og diskutere, hvordan man bruger forbindelsesobjektet til at udføre INSERT
forespørgsler.
Hvis du vil følge med i eksemplerne diskuteret i denne artikel, skal du oprette følgende MySQL-tabel i din database. Det er tabellen, som vi kommer til at bruge i alle eksemplerne fra nu af.
CREATE TABLE `students` ( `id` int(11) NOT NULL AUTO_INCREMENT, `first_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, `last_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, `email` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
Gå videre og opret ovenstående MySQL-tabel ved at bruge phpMyAdmin-softwaren eller kommandolinjeværktøjet.
Lad os derefter oprette db_insert.php
fil med følgende indhold. Glem ikke at erstatte forbindelsesparametrene med dine egne.
<?php $mysqli_link = mysqli_connect("localhost", "tutsplus-demo-user", "tutsplus-demo-password", "tutsplus-demo-database"); if (mysqli_connect_errno()) { printf("MySQL connection failed with the error: %s", mysqli_connect_error()); exit; } $insert_query = "INSERT INTO students(`first_name`,`last_name`,`email`) VALUES ('". mysqli_real_escape_string($mysqli_link, 'John') ."','". mysqli_real_escape_string($mysqli_link, 'Wood') ."','". mysqli_real_escape_string($mysqli_link, '[email protected]') ."')"; // run the insert query If (mysqli_query($mysqli_link, $insert_query)) { echo 'Record inserted successfully.'; } // close the db connection mysqli_close($mysqli_link); ?>
Først sætter vi en databaseforbindelse op ved at bruge mysqli_connect
funktion, som vi diskuterede tidligere. Derefter har vi forberedt indsættelsesforespørgslen, som vi skal udføre senere. Det er vigtigt at bemærke, at vi har brugt mysqli_real_escape_string
funktion til at undslippe strengværdier, som vi skal bruge i indsæt-forespørgslen. Specifikt skal du bruge denne funktion, når du har at gøre med værdier indsendt via $_POST
variabler for at undgå SQL-injektion.
Endelig har vi brugt mysqli_query
funktion, som tager to argumenter. Det første argument er det aktive forbindelseslink, hvor forespørgslen vil blive udført. Og det andet argument er MySQL-forespørgslen, som vi ønsker at udføre. mysqli_query
funktion returnerer TRUE
hvis forespørgslen blev udført.
Endelig har vi brugt mysqli_close
funktion til at lukke den aktive databaseforbindelse. Det er en god praksis at lukke databaseforbindelsen, når du er færdig med databasehandlinger.
Gå videre og kør scriptet, og det burde indsætte en post i students
bord!
Sådan opdaterer du registreringer
Opdatering af posterne i en database fra PHP-scriptet er meget lig insert-operationen; den eneste forskel er, at forespørgslen bliver opdateringsforespørgslen i stedet for indsættelsesforespørgslen.
Lad os revidere ovenstående eksempel og opdatere first_name
felt, som vist i følgende eksempel.
<?php $mysqli_link = mysqli_connect("localhost", "tutsplus-demo-user", "tutsplus-demo-password", "tutsplus-demo-database"); if (mysqli_connect_errno()) { printf("MySQL connection failed with the error: %s", mysqli_connect_error()); exit; } $update_query = "UPDATE students SET `first_name` = '". mysqli_real_escape_string($mysqli_link,'Johnny') ."' WHERE `email` = '[email protected]'"; // run the update query If (mysqli_query($mysqli_link, $update_query)) { echo 'Record updated successfully.'; } // close the db connection mysqli_close($mysqli_link); ?>
Gå videre og kør scriptet, og det burde opdatere posten i students
bord.
Sådan vælger du poster
I de tidligere afsnit diskuterede vi, hvordan du kan indsætte og opdatere poster i en database fra PHP-scriptet. I dette afsnit vil vi undersøge, hvordan du kan hente poster fra en database ved at bruge de forskellige typer MySQLi-funktioner.
For det første skal du bruge mysqli_query
funktion til at udføre valgforespørgslen. Efter vellykket udførelse af udvælgelsesforespørgslen vil mysqli_query
funktion returnerer mysqli-resultatobjektet, som vi kunne bruge til at iterere over de poster, der returneres af select-forespørgslen. Når det kommer til at hente og iterere over posterne fra MySQLi-resultatobjektet, er der forskellige funktioner tilgængelige.
mysqli_fetch_all
:Det giver dig mulighed for at hente alle resultatrækker på én gang. Du kan også angive, om du vil have resultater som en associativ matrix, en numerisk matrix eller begge dele.mysqli_fetch_array
:Det giver dig mulighed for at hente en række ad gangen. Og derfor bliver du nødt til at bruge while-løkken til at gentage alle posterne. Igen kan du angive, om du vil have en resultatrække som en associativ matrix, en numerisk matrix eller begge dele.mysqli_fetch_assoc
:Den henter en resultatrække én ad gangen som en associeret matrix.mysqli_fetch_object
:Den henter en resultatrække én ad gangen som et objekt.
Lad os se på følgende eksempel for at forstå, hvordan det virker:
<?php $mysqli_link = mysqli_connect("localhost", "tutsplus-demo-user", "tutsplus-demo-password", "tutsplus-demo-database"); if (mysqli_connect_errno()) { printf("MySQL connection failed with the error: %s", mysqli_connect_error()); exit; } $select_query = "SELECT * FROM students LIMIT 10"; $result = mysqli_query($mysqli_link, $select_query); while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) { echo "First Name:" . $row['first_name'] . "<br/>"; echo "Last Name:" . $row['last_name'] . "<br/>"; echo "Email:" . $row['email'] . "<br/>"; echo "<br/>"; } // close the db connection mysqli_close($mysqli_link); ?>
Som du kan se, har vi brugt mysqli_fetch_array
funktion med MYSQLI_ASSOC
mulighed som et andet argument. Og dermed returnerer den resultatrækken som en associeret matrix. Hvis du bruger MYSQLI_NUM
mulighed, vil du få adgang til den som $row[0]
, $row[1]
og $row[2]
i ovenstående eksempel.
På den anden side, hvis du bruger mysqli_fetch_object
funktion i ovenstående eksempel, kan du få adgang til værdierne som vist i følgende uddrag. For kortheds skyld vil jeg kun inkludere while-løkke-uddraget.
… … while ($row = mysqli_fetch_object($result)) { echo "First Name:" . $row->first_name . "<br/>"; echo "Last Name:" . $row->last_name . "<br/>"; echo "Email:" . $row->email . "<br/>"; echo "<br/>"; } ... ...
Så på denne måde kan du hente og vise poster fra MySQLi-databasen.
Sådan sletter du poster
I dette afsnit vil vi se, hvordan du kører sletteforespørgsler fra PHP-scriptet. Sletning af poster fra en database er en ret ligetil operation, da du blot skal forberede sletteforespørgslen og køre den med mysqli_query
funktion.
Lad os gennemgå følgende eksempel for at se, hvordan det virker.
<?php $mysqli_link = mysqli_connect("localhost", "tutsplus-demo-user", "tutsplus-demo-password", "tutsplus-demo-database"); if (mysqli_connect_errno()) { printf("MySQL connection failed with the error: %s", mysqli_connect_error()); exit; } $delete_query = "DELETE FROM students WHERE `email` = '[email protected]'"; // run the update query If (mysqli_query($mysqli_link, $delete_query)) { echo 'Record deleted successfully.'; } // close the db connection mysqli_close($mysqli_link); ?>
Som du kan se, er alt det samme, som vi allerede har set med indsættelses- og opdateringseksemplerne, bortset fra at forespørgslen er en sletteforespørgsel i dette tilfælde.
Så det er sådan, du kan udføre forskellige typer databaseoperationer fra PHP-scriptet.
Og dermed er vi nået til slutningen af denne tutorial. Det, vi hidtil har diskuteret i dag, skulle hjælpe dig med at styrke koncepter for databaseforbindelse, specifikt hvordan du forbinder PHP til MySQL og udfører forskellige typer operationer.