3 metoda për t'u lidhur me MySQL me PHP me shembuj kodesh
Për të filluar përdorimin e bazës së të dhënave MySQL, së pari duhet të kuptoni se si të lidheni nga programi juaj i personalizuar PHP (skripti) me këtë bazë të dhënash MySQL.
Ky artikull përshkruan tre metodat e mëposhtme, së bashku me shembujt përkatës të kodit PHP që shpjegojnë se si të lidheni me bazën e të dhënave tuaja nga PHP.
Për të gjithë shembujt e mëposhtëm, ne do të lidhemi me një bazë të dhënash ekzistuese MySQL. Shënim: Gjithçka e shpjeguar këtu do të funksionojë edhe me MariaDB, ashtu si MySQL.
1. Lidhja me PHP duke përdorur shtesën mysqli
*mysqli do të thotë MySQL i përmirësuar
Krijoni skedarin e mëposhtëm mysqli.php
connect_error) ( die("Gabim: nuk mund të lidhet: " . $conn->connect_error); ) echo "U lidh me bazën e të dhënave.
"; $result = $conn->query("SELECT id FROM goroda"); jehonë "Numri i rreshtave: $result->num_rows"; $result->close(); $conn->close(); ?> Në kodin e mësipërm:
Lidhur me bazën e të dhënave. Numri i rreshtave: 6 2. Lidhja nga PHP MySQL PDO Extension
*PDO do të thotë PHP Data Objects
Drejtuesi PDO_MYSQL zbaton ndërfaqen PDO të ofruar nga PHP për t'u lidhur nga skripti juaj PHP me një bazë të dhënash MySQL.
Krijoni skedarin e mëposhtëm mysql-pdo.php:
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "Lidhur me bazën e të dhënave.
"; $sql = "ZGJEDH ID-në NGA goroda"; printo "Lista e ID-së:
"; foreach ($conn->query($sql) si $row) ( print $row["id"] ."
"; ) $conn = null; ) catch(PDOException $err) (echo "Gabim: Nuk mund të lidhet: " . $err->getMessage(); ) ?> Në sa më sipër:
Lidhur me bazën e të dhënave. ID-ja e listës: 1 2 3 4 5 6 3. Lidhja nga PHP duke përdorur funksione të vjetëruara mysql
Përdoreni këtë metodë vetëm nëse jeni duke përdorur një version më të vjetër të PHP dhe për ndonjë arsye nuk mund të përmirësoni në versionin e ri. Në vend të kësaj metode rekomandohet përdorimi i metodës #2 dhe metodës #3 të treguar më sipër. Unë e kam përfshirë këtë metodë vetëm për referencë dhe jo si rekomandim për përdorim.
Kjo shtesë e veçantë është zhvlerësuar që nga PHP 5.5. Por që nga PHP 7.0 kjo as që do të funksionojë pasi u hoq. Që nga PHP 5.5, kur përdorni këto funksione, ai do të gjenerojë një gabim E_DEPRECATED.
Krijoni një skedar mysql.php:
"; $result = mysql_query("SELECT id FROM goroda"); $row = mysql_fetch_row($result); echo "id 1: ", $row, "
\n"; mysql_close($conn); ?> Në sa më sipër:
Lidhur me bazën e të dhënave. id 1: 1 Kështu mund të lidheni me MySQL. E përsëris, është më mirë të përdoren dy metodat e para; O
Për të përfituar sa më shumë nga databaza juaj MySQL, është e rëndësishme të kuptoni se si të lidheni nga një program i personalizuar PHP me një bazë të dhënash MySQL.
Ky tutorial përshkruan tre metodat e mëposhtme së bashku me një program shembullor përkatës PHP që do të shpjegojë se si të lidheni duke përdorur PHP me një bazë të dhënash.
Për ta bërë këtë, duhet të instaloni paketën PHP-MySQL.
Bazuar në shpërndarjen e RedHat duke përfshirë , përdorni yum për të instaluar PHP-MySQL siç tregohet më poshtë.
Jum instaloni php-mysql
Në varësi të sistemit tuaj, ne do të instalojmë ose përditësojmë varësitë e mëposhtme të mësipërme:
Pasi të jetë instaluar gjithçka, faqja phpinfo do të shfaqë modulin MySQL siç tregohet më poshtë:
Për të gjithë shembujt e mëposhtëm, ne do të lidhemi me një bazë të dhënash MySQL që tashmë ekziston. Nëse jeni i ri në MySQL, ky është një vend i mirë për të filluar: .
Shënim: Gjithçka e përshkruar këtu do të funksionojë edhe me MariaDB, ashtu siç funksionon me MySQL.
MySQLi qëndron për MySQL Improved.
Ju lutemi vini re se në shumicën e shpërndarjeve (p.sh.: CentOS), PHP-MySQLi është tashmë pjesë e paketës PHP-MySQL. Në këtë mënyrë nuk keni nevojë të kërkoni dhe instaloni paketën PHP-MySQLi. E tëra çfarë ju duhet të bëni është të instaloni paketën PHP-MySQL për të marrë një shtesë Mysqli funksionale në sistemin tuaj.
Krijoni skedarin e mëposhtëm mysqli.php në DocumentRoot në Apache:
connect_error) ( die("Gabim: Nuk mund të lidhet: " . $conn->connect_error); ) echo "Po lidhet me bazën e të dhënave.
"; $result = $conn->query("SELECT emrin FROM punonjës"); jehonë "Numri i rreshtave: $result->num_rows"; $result->close(); $conn->close(); ?>
Në sa më sipër:
Lidhu me bazën e të dhënave. Numri i rreshtave: 4
Shënim: Nëse po përpiqeni të lidheni me një bazë të dhënash të largët MySQL, atëherë mund ta bëni këtë për të shmangur gabimin e mohuar të lidhjes së hostit: Si të lejoni një klient MySQL të lidhet me një server të largët MySQL.
PDO do të thotë PHP Data Objects.
PDO_MYSQL zbaton ndërfaqen PDO të ofruar nga PHP për lidhjen e një programi me një bazë të dhënash MySQL.
Në shumicën e shpërndarjeve Linux (si CentOS dhe RedHat), paketa PHP-PDO është përfshirë tashmë në paketën PHP-MySQL. Në këtë mënyrë nuk keni nevojë të kërkoni dhe instaloni paketën PHP-PDO. E tëra çfarë ju duhet të bëni është të instaloni paketën PHP-MySQL për të marrë një shtesë funksionale PDO_MYSQL PHP në sistemin tuaj.
Krijoni skedarin e mëposhtëm MySQL-pdo.php në Apache DocumentRoot:
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "Po lidhet me bazën e të dhënave.
"; $sql = "ZGJIDHni emrin NGA punonjësi"; printoni "Emri i punonjësit:
"; foreach ($conn->query($sql) si $row) ( print $row["name"] . "
"; ) $conn = null; ) catch(PDOException $err) (echo "Gabim: Nuk mund të lidhet: " . $err->getMessage(); ) ?>
Në sa më sipër:
Kur telefononi mysqli.php nga shfletuesi juaj, do të shihni daljen e mëposhtme, që tregon se PHP ishte në gjendje të lidhej me bazën e të dhënave MySQL dhe të merrte të dhënat.
Lidhu me bazën e të dhënave. Emri i punonjësit: siteslan Maria Oleg
Përdoreni këtë metodë vetëm nëse jeni duke përdorur një version më të vjetër të PHP dhe nuk mund të përditësoni në versionin e ri për ndonjë arsye.
Kjo është një shtesë e trashëguar PHP 5.5. Por duke filluar nga versioni PHP 7.0, kjo nuk do të funksionojë pasi u hoq.
Që nga PHP 5.5, kur përdorni këto funksione, ato do të gjenerojnë një gabim E_DEPRECATED.
Krijoni skedarin e mëposhtëm MySQL-legacy.php nën Apache DocumentRoot:
"; $result = mysql_query ("ZGJIDH emrin nga punonjësi"); $row = mysql_fetch_row($result); echo "Punonjësi 1: ", $row, "
\n"; mysql_close($conn); ?>
Në sa më sipër:
Kur telefononi MySQL-legacy.php nga shfletuesi juaj, do të shihni daljen e mëposhtme, që tregon se PHP ishte në gjendje të lidhej me bazën e të dhënave MySQL dhe të merrte të dhënat.
Lidhu me bazën e të dhënave. Punonjësi 1: AndreyEx
Në këtë artikull sot do të flasim për krijimin e një lidhjeje me një bazë të dhënash dhe do të diskutojmë se cili opsion është më mirë të përdoret procedural ose i orientuar nga objekti. Së pari, le të shohim se në çfarë niveli jemi, nëse ky është niveli i një fillestari të plotë, atëherë këshilla ime, pa përjashtim, është të filloni të përdorni stilin procedural të lidhjes me bazën e të dhënave. Më parë, kam shkruar një artikull mbi këtë temë në blogun tim për më shumë informacion rreth stilit procedural të lidhjes me një bazë të dhënash, lexoni artikullin: "Si të lidheni me MySQL duke përdorur PHP". Nëse tashmë keni një përvojë duke punuar me një stil procedural të lidhjes me një bazë të dhënash, atëherë me siguri, si unë, sapo keni marrë projektet e mia dhe i keni detyruar ata të përdorin një qasje të orientuar nga objekti.
Në një mënyrë apo tjetër, tani do të shikojmë hapat e ndërtimit të një klase për krijimin e një lidhjeje me një bazë të dhënash MySQL në PHP. Do të na duhen dy skedarë PHP, në një skedar do të "fusim" klasën për krijimin e një lidhjeje me bazën e të dhënave, dhe në të dytën do të punojmë me këtë klasë.
Le të krijojmë dy skedarë:
Mendoj se nuk jemi më fëmijë të vegjël dhe e dimë se çfarë duhet të punojmë me skedarët PHP. Ueb serveri i instaluar është Apache, PHP, MySQL DBMS dhe e di se ku t'i vendosë këto skedarë - (për ata që nuk e dinë ose i kanë harruar).
Unë e vendos skedarin në të cilin është ruajtur klasa në një skedar të veçantë dhe e emërtoj në formatin: class name.class.php dhe e di se çfarë ruhet në këtë skedar. Kur ka shumë klasa në një projekt, ju mund të humbni, kështu që unë rekomandoj emërtimin e skedarëve me klasa në formatin e përshkruar më sipër.
Skedari Database.class.php:
Le të shohim tani se çfarë u krijua në këtë hap. Duke përdorur fjalën kyçe "class", emrin e klasës - DataBase dhe kllapat kaçurrelë, krijuam trupin e klasës. Në klasën e krijuar, ne krijuam dy veti, në $mConnect - ku ruhet rezultati i lidhjes me bazën e të dhënave dhe $mSelectDB - ku ruhet rezultati i zgjedhjes së një baze të dhënash. Ju mund të keni vënë re fjalët kyçe në çdo pronë - publike dhe statike. Për çfarë po flasin? Publike do të thotë që prona është e aksesueshme nga jashtë klasës, dhe statica bën të mundur aksesin ose thirrjen e pronës pa krijuar një shembull të klasës, gjë që shpesh është e përshtatshme në punë.
Le të shtojmë metodën Connect() për të krijuar një lidhje me bazën e të dhënave:
".mysql_error()."
"; exit(); return false;) // Ktheje rezultatin ktheje veten::$mConnect; ) ) ?>Funksioni mysql_connect() krijon një lidhje me bazën e të dhënave dhe ruan rezultatin e ekzekutimit në $mConnect. Më pas vjen një kontroll me konstruktin IF: Nëse lidhja nuk ishte e suksesshme, shfaq një mesazh gabimi... Përndryshe, PHP do të injorojë bllokun IF dhe do të vazhdojë të zgjedhë bazën e të dhënave. Funksioni mysql_select_db() zgjedh emrin e bazës së të dhënave, nëse databaza e kërkuar nuk ekziston në bazën e të dhënave, në këtë rast programi do ta informojë përdoruesin për një gabim. Nëse gjithçka është e suksesshme, lidhja e bazës së të dhënave do të kthehet.
Shto metodën Close():
Na vjen keq, nuk mundëm të lidheshim me serverin MySQL
"; exit(); return false; ) // Provoni të zgjidhni vetë një bazë të dhënash::$mSelectDB = mysql_select_db($name, self::$mConnect); // Nëse baza e të dhënave nuk është zgjedhur, shfaqni një mesazh gabimi.. if( !self::$mSelectDB) ( echo "".mysql_error()."
"; exit(); return false; ) // Ktheni rezultatin kthimi vetë::$mConnect; ) // Metoda mbyll lidhjen me funksionin statik publik të bazës së të dhënave Close() ( // Kthen rezultatin kthimi mysql_close(self: :$mConnect) ) ) ?>Metoda tjetër dhe e fundit në këtë klasë, Close(), mbyll lidhjen me bazën e të dhënave, funksioni mysql_close () mbyll lidhjen me serverin MySQL dhe kthen rezultatin.
Skedari Index.php:
Duke përdorur funksionin define(), krijuam konstante për të ruajtur parametrat e lidhjes së bazës së të dhënave. Require_once përfshin klasën tonë DataBase në skedarin index.php.
Le të kujtojmë fjalën kyçe statike që është përdorur në klasën DataBase në vetitë dhe metodat e kësaj klase. Kjo na jep mundësinë për të hyrë në vetitë dhe metodat e klasës duke përdorur "::" (dy dy pika). Metoda DataBase::Connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_DATABASE) merr 4 parametra - konstante të krijuara nga funksioni define(), të cilat ruajnë informacione për lidhjen me bazën e të dhënave. Nëse lidhja është e suksesshme, metoda Connect() do të na kthejë një lidhje me bazën e të dhënave. Më pas, ne do të jemi në gjendje të punojmë dhe të ekzekutojmë pyetje në bazën e të dhënave. Funksioni mysql_query() - ekzekuton një pyetje në bazën e të dhënave. Funksioni mysql_fetch_assoc() përpunon një seri rezultatesh pyetjesh dhe kthen një grup shoqërues. Konstrukti echo shfaq versionin e serverit MySQL. Dhe së fundi, metoda DataBase::Close() do të mbyllë lidhjen me bazën e të dhënave.
Duke përdorur php...
Krijimi i një lidhjeje të bazës së të dhënave në PHP në mënyra të ndryshme:
$conn=mysql_connect($db_hostname, $db_username, $db_password) ose die ("Nuk ka lidhje me serverin");
mysql_select_db($db_database,$conn) ose die ("Jo, nuk ishte e mundur të lidheshim me bazën e të dhënave");
Shpjegimet e variablave më poshtë.
Përdoren funksionet e mëposhtme:
Në të njëjtën kohë, ne vazhdimisht kontrollojmë për gabime në këtë mënyrë: ose vdesim ("Gabimi është i tillë dhe ai"); - përkthyer si ose vdis me një gabim të tillë - për të gjetur menjëherë se ku është gabimi.
config.php
// variabla për t'u lidhur me bazën e të dhënave
$host = "localhost"; /mikpritës
$username = "rrënjë"; // fjalëkalimi për t'u lidhur me bazën e të dhënave
$password = ""; // fjalëkalimi për t'u lidhur me bazën e të dhënave - në kompjuterin lokal mund të jetë bosh.
$database_name = "my-dolgi"; // emri i bazës së të dhënave
// mënyra e vjetër e lidhjes me bazën e të dhënave
mysql_connect($host, $username, $password) ose die("Nuk mund të lidhet, krijo lidhje");
// zgjidhni bazën e të dhënave. Nëse ka një gabim, jepni dalje
mysql_select_db ($database_name) ose die(mysql_error());
indeks.php
request_once "config.php";
$result = mysql_query ("ZGJIDHJE Emrin, Paratë NGA Dolg ORDER BY Money DESC LIMIT 5") ose die(mysql_error());
";
ndërsa ($rresht = mysql_fetch_assoc($rezultat)) (
";
}
mysql_free_rezultat($rezultat);
// Mbyll lidhjen
mysql_close();
Kjo metodë:
config.php
// lidhjet me bazën e të dhënave
$link = mysqli_connect("localhost", "username", "password", "name-baza e të dhënave"); // këtu futim direkt të dhënat tuaja: emri i përdoruesit, fjalëkalimi dhe emri i bazës së të dhënave, fusha e parë zakonisht është localhost
// Gabim i lidhjes së daljes
nëse (!$link) (
echo "Gabim në lidhjen me bazën e të dhënave. Kodi i gabimit: " . mysqli_connect_error();
dalje;
}
Ju lutemi vini re - mysqli përdoret kudo, jo mysql!!!
indeks.php
request_once "config.php";
// Ekzekutoni kërkesën. Nëse ka një gabim, ne e shfaqim atë
nëse ($rezultat = mysqli_query($lidhje,"ZGJIDH Emrin, Paratë NGA Borxhi RENDOSJE SIPAS PARAVE DESC LIMIT 5")) (
Echo "Kujt i detyrohem në rend zbritës:
";
// Marrja e rezultateve të pyetjes
ndërsa ($rresht = mysqli_fetch_assoc($rezultat)) (
echo $row["Emri"] . "me borxh". $row["Paratë"] . " rubla.
";
}
// lirimi i memories së përdorur
mysqli_free_rezultat($rezultati);
// Mbyll lidhjen
mysqli_close($lidhje);
}
Siç mund ta shihni, disa pika kanë ndryshuar (me shkronja të pjerrëta).
3) Metoda e orientuar nga objekti për t'u lidhur me bazën e të dhënave MySQL - duke përdorur metoda dhe klasa:
Kundër: Më komplekse dhe më pak e ndjeshme ndaj gabimeve.
Pro: shkurtësi dhe komoditet për programuesit me përvojë.
$conn = mysqli i ri ($db_hostname, $db_username, $db_password, $db_baza e të dhënave);
if($conn->connect_errno)(
die($conn->connect_error);
) else (jehonë "Lidhja me bazën e të dhënave u krijua me sukses";)
këtu, në parim, gjithçka është intuitive:
config.php
// lidhjet me bazën e të dhënave
$mysqli = mysqli i ri ("localhost", "username", "password", "name-baza e të dhënave"); // këtu futim direkt të dhënat tuaja: emri i përdoruesit, fjalëkalimi dhe emri i bazës së të dhënave, fusha e parë zakonisht është localhost
// Gabim i lidhjes së daljes
nëse ($mysqli->connect_error) (
die ("Gabimi i lidhjes DB: (" . $mysqli->connect_errno . ") " . mysqli_connect_error) ;
}
Ju lutemi vini re - mysqli përdoret kudo, jo mysql!!! dhe ndryshe nga metoda e mëparshme, shfaqen shigjetat “->”, të cilat tregojnë se ky është një stil OOP.
indeks.php
request_once "config.php";
// Ekzekutoni kërkesën. Nëse ka një gabim, ne e shfaqim atë
nëse ($rezultati = $ mysqli->pyetje("ZGJIDH Emrin, Paratë NGA Borxhi ORDER SIPAS PARAVE DESC LIMIT 5")) (
Echo "Kujt i detyrohem në rend zbritës:
";
// Marrja e rezultateve të pyetjes
ndërsa ($rresht = $rezultat-> fetch_assoc()) {
echo $row["Emri"] . "me borxh". $row["Paratë"] . " rubla.
";
}
// lirimi i memories së përdorur
$rezultat-> mbyll ();
// Mbyll lidhjen
$mysqli->mbyll();
}
Detyra juaj është të gjeni dallimet.
Gjatë lidhjes me një bazë të dhënash MySQL, përdoren shprehjet e përgatitura (duke përdorur metodën përgatitore) dhe si rezultat ka siguri më të madhe dhe rrit shumë performancën.
skedari i konfigurimit nga metoda e mëparshme! - njëjtë
indeks.php
// Stili PDO për komunikim me MySQL
if ($stmt = $mysqli->prepare("SELECT Emri, Voney FROM Dolg ORDER BY Money< ? LIMIT 5")) {
$stmt->bind_param("i", $summa);
$summa = 100000;
//fillimi i ekzekutimit
$stmt->ekzekutoni();
// Deklarimi i variablave për vlerat e përgatitura
$stmt->bind_rezult($col1, $col2);
Echo "Kujt i detyrohem në rend zbritës:
";
// Marrja e rezultateve të pyetjes
ndërsa ($stmt->fetch()) (
jehonë $col1 . "me borxh". $col2 . " rubla.
";
}
// lirimi i memories së përdorur
$stmt->close();
// Mbyll lidhjen
$mysqli->close();
Siç mund ta shihni, kjo është shumë më e ndërlikuar dhe ju duhet të studioni PDO - kjo është një temë më vete.