sql >> Database teknologi >  >> RDS >> Mysql

Sådan forbinder du PHP til MySQL

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 bruge localhost eller 127.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.


  1. Sådan returneres id'er på indsatser med Ibatis (med RETURNING nøgleord)

  2. Tilføj kolonner til en eksisterende tabel i SQL Server-database

  3. SQL SERVER – Et trick til at håndtere dynamisk SQL for at undgå SQL-injektionsangreb?

  4. Fatal fejl:Kald til udefineret funktion sqlsrv_connect() i C:\xampp\htdocs