Vill du lära dig hur du kopplar PHP till MySQL och utför olika typer av databasoperationer? I den här artikeln kommer vi att göra just det—vi kommer att diskutera MySQL-databasanslutning i PHP.
PHP tillhandahåller olika sätt att ansluta PHP till en MySQL-databasserver. Fram till PHP 5.5 var ett av de mest populära sätten med MySQL-tillägget – det gav ett "procedurmässigt" sätt att ansluta till MySQL-servern. Den här tillägget är dock föråldrat från och med PHP 5.5, så vi kommer inte att diskutera det.
För närvarande är dina två val PDO och MySQLi.
Tillägget PDO (PHP Data Objects) stöder olika typer av underliggande databasservrar tillsammans med MySQL-servern. Och därmed är den portabel om du bestämmer dig för att byta den underliggande databasservern när som helst i framtiden.
Å andra sidan är MySQLi-tillägget specifikt för MySQL-servern och ger bättre hastighet och prestanda. MySQLi-tillägget kan också vara lite enklare att förstå till en början, eftersom det låter dig skriva SQL-frågor direkt. Om du har arbetat med SQL-databaser tidigare, kommer detta att vara mycket bekant. PDO-tillägget skapar dock en kraftfull mappning från SQL-databasen till din PHP-kod och låter dig göra många databasoperationer utan att behöva känna till detaljerna i SQL eller databasen. I det långa loppet och för större projekt kan detta spara mycket kodning och felsökning.
I det här inlägget kommer jag att använda MySQLi-tillägget. Men du kan lära dig mer om PDO-förlängningen här på Envato Tuts+.
- PHP Bygg snabbt ett PHP CRUD-gränssnitt med PDO Advanced CRUD Generator ToolSajal Soni
Vi tar upp följande ämnen i den här artikeln:
- skapa en MySQL-anslutning
- infoga, uppdatera och ta bort poster
- hämtar poster
Bästa PHP-databasskript på CodeCanyon
I det här inlägget kommer jag att visa dig hur du gör en barmetallanslutning till en MySQL-databas från PHP. Detta är en viktig färdighet att ha, men om du vill spara tid på ditt nästa projekt kanske du vill uppgradera till ett professionellt databasskript. Detta kommer att spara tid och göra ditt arbete enklare.
Utforska de bästa och mest användbara PHP-databasskripten som någonsin skapats på CodeCanyon. Med en billig engångsbetalning kan du köpa dessa högkvalitativa WordPress-teman och förbättra din webbplatsupplevelse för dig och dina besökare.
Här är några av de bästa PHP-databasskripten som finns tillgängliga på CodeCanyon för 2020.
- PHPJämföra PHP-databasabstraktionslager och CRUD-plugins Sajal Soni
Skapa en MySQL-anslutning
I det här avsnittet kommer jag att visa dig hur du kan ansluta till MySQL-servern från ditt PHP-skript och skapa ett anslutningsobjekt. Senare kommer detta anslutningsobjekt att användas för att köra frågor, hämta utdata och manipulera databasposterna. Som vi diskuterade tidigare kommer vi att använda PHP MySQLi-tillägget för den här artikeln.
MySQLi-tillägget ger två olika sätt att utföra databasoperationer. Du kan använda det antingen på det objektorienterade sättet eller på det procedurmässiga sättet, men eftersom den här handledningen är riktad till nybörjare, kommer jag att hålla mig till det procedurmässiga sättet. Om du är intresserad av att se några objektorienterade utdrag kan du pinga mig i kommentarsavsnittet nedan så ger jag dem gärna.
För att börja, fortsätt och skapa db_connect.php fil under din dokumentrot med följande innehåll.
<?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; }
Observera att jag har använt platshållare i mysqli_connect
funktion – du måste ersätta dessa med faktiska värden.
Låt oss gå igenom varje platshållare för att se vad den står för.
{HOST_NAME}
:Detta representerar din MySQL-servers värdnamn eller IP-adress. Om du har installerat MySQL-servern på samma system tillsammans med PHP, bör du användalocalhost
eller127.0.0.1
. Å andra sidan, om du använder en MySQL-server som är värd extern, kan du använda motsvarande värdnamn eller IP-adress.{DATABASE_USERNAME}
:Detta representerar användarnamnet för din MySQL-användare. I grund och botten är detta användarnamnet som du använder för att ansluta till din MySQL-server.{DATABASE_PASSWORD}
:Detta representerar lösenordet för din MySQL-användare. Återigen, detta är lösenordet som du använder för att ansluta till din MySQL-server tillsammans med MySQL-användarnamnet.{DATABASE_NAME}
:Detta är namnet på MySQL-databasen som du vill ansluta till. När anslutningen har skapats kommer du att fråga den här databasen för ytterligare åtgärder.
Fortsätt och ersätt dessa platshållare med faktiska värden. I mitt fall har jag installerat MySQL-servern lokalt och jag har en MySQL-användare med tutsplus-demo-user som MySQL-användarnamnet och tutsplus-demo-lösenordet som MySQL-lösenord. Och med det ser ovanstående exempel ut så här:
<?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; }
Om du kör det här exemplet bör det skapa en databasanslutningslänk och tilldela den till $mysqli_link
variabel, som vi kommer att använda senare för att utföra olika typer av databasoperationer.
Å andra sidan, om det finns några problem med att konfigurera anslutningen, mysqli_connect_errno
funktionen returnerar en felkod och mysqli_connect_error
funktionen visar det faktiska felet. I exemplet ovan har vi använt det för felsökningsändamål.
Nu har vi en framgångsrik anslutning till MySQL-servern, och vi kommer att se hur man använder den för att utföra olika typer av frågor från nästa avsnitt och framåt.
Hur man infogar poster
I föregående avsnitt diskuterade vi hur man använder mysqli_connect
funktion för att skapa en databasanslutning med MySQL-servern. I det här avsnittet går vi vidare och diskuterar hur man använder anslutningsobjektet för att utföra INSERT
frågor.
Om du vill följa exemplen som diskuteras i den här artikeln, måste du skapa följande MySQL-tabell i din databas. Det är tabellen som vi kommer att använda i alla exempel från och med nu.
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;
Fortsätt och skapa ovanstående MySQL-tabell genom att använda programvaran phpMyAdmin eller kommandoradsverktyget.
Låt oss sedan skapa db_insert.php
fil med följande innehåll. Glöm inte att ersätta anslutningsparametrarna med dina egna.
<?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 ställer vi upp en databasanslutning genom att använda mysqli_connect
funktion, som vi diskuterade tidigare. Efter det har vi förberett infogningsfrågan som vi ska köra senare. Det är viktigt att notera att vi har använt mysqli_real_escape_string
funktion för att undvika strängvärden som vi kommer att använda i infogningsfrågan. Specifikt måste du använda den här funktionen när du har att göra med värden som skickats via $_POST
variabler för att undvika SQL-injektion.
Slutligen har vi använt mysqli_query
funktion, som tar två argument. Det första argumentet är den aktiva anslutningslänken där frågan kommer att köras. Och det andra argumentet är MySQL-frågan som vi vill köra. mysqli_query
funktion returnerar TRUE
om frågan kördes framgångsrikt.
Slutligen har vi använt mysqli_close
funktion för att stänga den aktiva databasanslutningen. Det är en bra praxis att stänga databasanslutningen när du är klar med databasoperationer.
Fortsätt och kör skriptet, och det bör infoga en post i students
bord!
Hur man uppdaterar poster
Att uppdatera posterna i en databas från PHP-skriptet är mycket likt infogningsoperationen; den enda skillnaden är att frågan kommer att vara uppdateringsfrågan istället för infogningsfrågan.
Låt oss revidera exemplet ovan och uppdatera first_name
fältet, som visas i följande exempel.
<?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); ?>
Fortsätt och kör skriptet, och det bör uppdatera posten i students
tabell.
Hur man väljer poster
I de tidigare avsnitten diskuterade vi hur du kan infoga och uppdatera poster i en databas från PHP-skriptet. I det här avsnittet kommer vi att utforska hur du kan hämta poster från en databas genom att använda de olika typerna av MySQLi-funktioner.
Först måste du använda mysqli_query
funktion för att köra urvalsfrågan. Efter framgångsrik exekvering av urvalsfrågan, mysqli_query
funktion returnerar mysqli-resultatobjektet, som vi kan använda för att iterera över posterna som returneras av select-frågan. När det gäller att hämta och iterera över posterna från MySQLi-resultatobjektet finns det olika funktioner tillgängliga.
mysqli_fetch_all
:Det låter dig hämta alla resultatrader på en gång. Du kan också ange om du vill ha resultat som en associativ array, en numerisk array eller båda.mysqli_fetch_array
:Det låter dig hämta en rad i taget. Och därför måste du använda while-loopen för att iterera över alla poster. Återigen kan du ange om du vill ha en resultatrad som en associativ array, en numerisk array eller båda.mysqli_fetch_assoc
:Den hämtar en resultatrad en i taget som en associerad array.mysqli_fetch_object
:Den hämtar en resultatrad en i taget som ett objekt.
Låt oss ta en titt på följande exempel för att förstå hur det fungerar:
<?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 använt mysqli_fetch_array
funktion med MYSQLI_ASSOC
alternativ som ett andra argument. Och därmed returnerar den resultatraden som en associerad array. Om du använder MYSQLI_NUM
alternativet, skulle du komma åt det som $row[0]
, $row[1]
och $row[2]
i exemplet ovan.
Å andra sidan, om du använder mysqli_fetch_object
funktion i exemplet ovan kan du komma åt värdena som visas i följande utdrag. För korthetens skull kommer jag bara att inkludera medan loop-kodavsnittet.
… … 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å detta sätt kan du hämta och visa poster från MySQLi-databasen.
Hur man tar bort poster
I det här avsnittet kommer vi att se hur du kör raderingsfrågor från PHP-skriptet. Att ta bort poster från en databas är en ganska enkel operation eftersom du bara behöver förbereda raderingsfrågan och köra den med mysqli_query
funktion.
Låt oss gå igenom följande exempel för att se hur det fungerar.
<?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 är allt detsamma som vi redan har sett med infognings- och uppdateringsexemplen, förutom att frågan är en raderingsfråga i det här fallet.
Så det är så du kan utföra olika typer av databasoperationer från PHP-skriptet.
Och med det har vi nått slutet av denna handledning. Det vi har diskuterat hittills i dag bör hjälpa dig att stärka databasanslutningskoncept, särskilt hur du kopplar PHP till MySQL och utför olika typer av operationer.