PHP MySQLFuncții: mysqli_query și mysqli_connect
⚡ Rezumat inteligent
MySQLPHP și alte metode de acces la baze de date permit unui script PHP să se conecteze la o bază de date, să execute interogări și să citească rezultatele. Această prezentare prezintă funcțiile principale MySQL, exemple CRUD complete, instrucțiuni pregătite pentru securitate și metodele alternative de acces PDO și ODBC.

PHP are o colecție bogată de funcții încorporate pentru manipularea MySQL baze de date.
Funcția PHP mysqli_connect
Funcția PHP mysql_connect este utilizată pentru conectarea la un MySQL server de baze de date.
Are următoarea sintaxă.
<?php $db_handle = mysqli_connect($db_server_name, $db_user_name, $db_password); ?>
AICI,
- „$db_handle” este variabila resursă de conexiune la baza de date.
- „mysqli_connect(…)” este funcția pentru conexiunea la baza de date PHP
- „$db_server_name” este numele sau adresa IP a serverului care găzduiește MySQL Server.
- „$db_user_name” este un nume de utilizator valid în MySQL Server.
- „$db_password” este o parolă validă asociată cu un nume de utilizator în MySQL Server.
Funcția PHP mysqli_select_db
Funcția mysqli_select_db este utilizată pentru a selecta o bază de date.
Are următoarea sintaxă.
<?php mysqli_select_db($db_handle, $database_name); ?>
AICI,
- „mysqli_select_db(…)” este funcția de selecție a bazei de date care returnează fie adevărat, fie fals
- „$db_handle” este linkul de conectare la server
- „$database_name” este numele bazei de date
Funcția PHP mysqli_query
Funcția mysqli_query este folosită pentru a executa SQL întrebări.
Funcția poate fi utilizată pentru a executa următoarele tipuri de interogări:
- Insera
- Selectați
- Actualizează
- Șterge
Are următoarea sintaxă.
<?php mysqli_query($db_handle, $query); ?>
AICI,
- „mysqli_query(…)” este funcția care execută interogările SQL.
- „$db_handle” este linkul de conectare la server
- „$query” este interogarea SQL care trebuie executată
Funcția PHP mysqli_num_rows
Funcția mysqli_num_rows este utilizată pentru a obține numărul de rânduri returnate dintr-o interogare de selectare.
Are următoarea sintaxă.
<?php mysqli_num_rows($result); ?>
AICI,
- „mysqli_num_rows(…)” este funcția de numărare a rândurilor
- „$rezultat” este setul de rezultate mysqli_query
Funcția PHP mysqli_fetch_array
Funcția mysqli_fetch_array este utilizată pentru a prelua tablouri de rânduri dintr-un set de rezultate ale unei interogări.
Are următoarea sintaxă.
<?php mysqli_fetch_array($result); ?>
AICI,
- „mysqli_fetch_array(…)” este funcția pentru preluarea matricelor de rânduri
- „$rezultat” este rezultatul returnat de funcția mysqli_query.
Funcția PHP mysqli_close
Funcția mysqli_close este utilizată pentru a închide o conexiune la o bază de date deschisă.
Are următoarea sintaxă.
<?php mysqli_close($db_handle); ?>
AICI,
- „mysqli_close(…)” este funcția PHP care închide conexiunea
- „$db_handle” este resursa de conectare la server
PHP MySQL Exemple CRUD
Să analizăm exemple practice care profită de aceste funcții. Acest tutorial presupune cunoștințe despre MySQL și SQL; dacă acești termeni nu vă sunt familiarizați, consultați MySQL și tutoriale SQL.
Vom crea o bază de date simplă numită my_personal_contacts cu un singur tabel. Conectați-vă la MySQL folosind instrumentul de acces preferat, cum ar fi MySQL Workbench sau phpMyAdmin, creați o bază de date numită my_personal_contacts, apoi executați scriptul de mai jos pentru a crea tabelul și a insera date fictive.
CREATE TABLE IF NOT EXISTS `my_contacts` ( `id` int(11) NOT NULL AUTO_INCREMENT, `full_names` varchar(255) NOT NULL, `gender` varchar(6) NOT NULL, `contact_no` varchar(75) NOT NULL, `email` varchar(255) NOT NULL, `city` varchar(255) NOT NULL, `country` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ; INSERT INTO `my_contacts` (`id`, `full_names`, `gender`, `contact_no`, `email`, `city`, `country`) VALUES (1, 'Zeus', 'Male', '111', 'zeus@olympus.mt.co', 'Agos', 'Greece'), (2, 'Anthena', 'Female', '123', 'anthena@olympus.mt.co', 'Athens', 'Greece'), (3, 'Jupiter', 'Male', '783', 'jupiter@planet.pt.co', 'Rome', 'Italy'), (4, 'Venus', 'Female', '987', 'venus@planet.pt.co', 'Mars', 'Italy');
Citirea înregistrărilor din baza de date
Acum vom crea un program care să afișeze înregistrările din baza de date.
<?php $dbh = mysqli_connect('localhost', 'root', 'melody'); // connect to MySQL server if (!$dbh) die("Unable to connect to MySQL: " . mysqli_connect_error()); if (!mysqli_select_db($dbh, 'my_personal_contacts')) die("Unable to select database: " . mysqli_error($dbh)); $sql_stmt = "SELECT * FROM my_contacts"; // SQL select query $result = mysqli_query($dbh, $sql_stmt); // execute SQL statement if (!$result) die("Database access failed: " . mysqli_error($dbh)); $rows = mysqli_num_rows($result); // get number of rows returned if ($rows) { while ($row = mysqli_fetch_array($result)) { echo 'ID: ' . $row['id'] . '<br>'; echo 'Full Names: ' . $row['full_names'] . '<br>'; echo 'Gender: ' . $row['gender'] . '<br>'; echo 'Contact No: ' . $row['contact_no'] . '<br>'; echo 'Email: ' . $row['email'] . '<br>'; echo 'City: ' . $row['city'] . '<br>'; echo 'Country: ' . $row['country'] . '<br><br>'; } } mysqli_close($dbh); // close the database connection ?>
Executarea codului de mai sus returnează rezultatele prezentate în diagrama de mai jos.
Inserarea de noi înregistrări
Să analizăm acum un exemplu care adaugă o nouă înregistrare în tabelul nostru. Codul de mai jos prezintă implementarea.
<?php $dbh = mysqli_connect('localhost', 'root', 'melody'); // connect to MySQL server if (!$dbh) die("Unable to connect to MySQL: " . mysqli_connect_error()); if (!mysqli_select_db($dbh, 'my_personal_contacts')) die("Unable to select database: " . mysqli_error($dbh)); $sql_stmt = "INSERT INTO `my_contacts` (`full_names`,`gender`,`contact_no`,`email`,`city`,`country`)"; $sql_stmt .= " VALUES(7,8,9,10,11,12)"; $result = mysqli_query($dbh, $sql_stmt); // execute SQL statement if (!$result) die("Adding record failed: " . mysqli_error($dbh)); echo "Poseidon has been successfully added to your contacts list"; mysqli_close($dbh); // close the database connection ?>
Executarea codului de mai sus generează mesajul „Poseidon a fost adăugat cu succes la lista de contacte”. Reveniți la exemplul de interogare de selecție și recuperați din nou contactele pentru a vedea dacă Poseidon a fost adăugat la lista dvs.
Actualizarea înregistrărilor
Să analizăm acum un exemplu care actualizează o înregistrare din baza de date. Să presupunem că Poseidon și-a schimbat numărul de contact și adresa de e-mail.
<?php $dbh = mysqli_connect('localhost', 'root', 'melody'); // connect to MySQL server if (!$dbh) die("Unable to connect to MySQL: " . mysqli_connect_error()); if (!mysqli_select_db($dbh, 'my_personal_contacts')) die("Unable to select database: " . mysqli_error($dbh)); $sql_stmt = "UPDATE `my_contacts` SET `contact_no` = 8, `email` = 9"; $sql_stmt .= " WHERE `id` = 5"; // SQL update query $result = mysqli_query($dbh, $sql_stmt); // execute SQL statement if (!$result) die("Updating record failed: " . mysqli_error($dbh)); echo "ID number 5 has been successfully updated"; mysqli_close($dbh); // close the database connection ?>
Ștergerea înregistrărilor
Să analizăm acum un exemplu care elimină înregistrări din baza de date. Să presupunem că Venus are un ordin de restricție împotriva noastră și trebuie să eliminăm informațiile ei de contact din baza noastră de date. Baza de date.
<?php $dbh = mysqli_connect('localhost', 'root', 'melody'); // connect to MySQL server if (!$dbh) die("Unable to connect to MySQL: " . mysqli_connect_error()); if (!mysqli_select_db($dbh, 'my_personal_contacts')) die("Unable to select database: " . mysqli_error($dbh)); $id = 4; // Venus's ID in the database $sql_stmt = "DELETE FROM `my_contacts` WHERE `id` = $id"; // SQL delete query $result = mysqli_query($dbh, $sql_stmt); // execute SQL statement if (!$result) die("Deleting record failed: " . mysqli_error($dbh)); echo "ID number $id has been successfully deleted"; mysqli_close($dbh); // close the database connection ?>
Prevenirea injecției SQL cu instrucțiuni pregătite
Exemplele CRUD de mai sus construiesc interogări prin concatenarea șirurilor de caractere. Atunci când orice parte a unei interogări provine de la date introduse de utilizator, acest lucru deschide calea către injecții SQL. Instrucțiunile pregătite rezolvă acest lucru prin trimiterea separată a interogării și a datelor, astfel încât datele introduse nu pot modifica niciodată structura interogării.
<?php $dbh = mysqli_connect('localhost', 'root', 'melody'); $stmt = mysqli_prepare($dbh, "INSERT INTO my_contacts (full_names, email) VALUES (?, ?)"); mysqli_stmt_bind_param($stmt, "ss", $name, $email); $name = 'Poseidon'; $email = 'poseidon@sea.oc'; mysqli_stmt_execute($stmt); mysqli_stmt_close($stmt); mysqli_close($dbh); ?>
Aici, semnele de întrebare sunt substituenți, iar bind_param leagă în siguranță valorile numelui și adresei de e-mail. Baza de date le tratează strict ca date, motiv pentru care instrucțiunile pregătite, disponibile atât în MySQL, cât și în PDO, sunt metoda recomandată pentru a rula orice interogare care utilizează date introduse de utilizator.
Obiect de acces la date PHP (PDO)
PDO este o clasă care ne permite să manipulăm diferite motoare de baze de date, cum ar fi MySQL, PostgreSQLși MS SQL Server folosind aceeași interfață.
Codul de mai jos arată metoda de acces la baza de date folosind obiectul PDO.
Notă: codul de mai jos presupune cunoștințe despre limbajul SQL, matrice, tratarea excepțiilor și bucla foreach.
<?php try { $pdo = new PDO("mysql:host=localhost;dbname=my_personal_contacts", 'root', 'melody'); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $pdo->exec('SET NAMES "utf8"'); $sql_stmt = "SELECT * FROM `my_contacts`"; $result = $pdo->query($sql_stmt); $result->setFetchMode(PDO::FETCH_ASSOC); $data = array(); foreach ($result as $row) { $data[] = $row; } print_r($data); } catch (PDOException $e) { echo $e->getMessage(); } ?>
AICI,
- „try{…}catch{…}” este blocul de gestionare a excepțiilor
- „$pdo = new PDO(“mysql…” creează o instanță a obiectului PDO și transmite driverul bazei de date, numele serverului și al bazei de date, ID-ul de utilizator și parola.”
- „$pdo->setAttribute…” setează modul de eroare PDO pentru a genera excepții
- „$pdo->exec('SET NAMES…” setează formatul de codare
Acces la date ODBC în PHP
ODBC este acronimul pentru Open Database Connectivity (Conectivitate deschisă la baze de date). Are următoarea sintaxă de bază.
<?php $conn = odbc_connect($dsn, $user_name, $password); ?>
AICI,
- „odbc_connect” este funcția încorporată în PHP
- „$dsn” este numele sursei de date ODBC.
- „$user_name” este opțional și este utilizat pentru numele de utilizator ODBC
- „$password” este opțional și este folosit pentru parola ODBC
Exemplul de mai jos presupune că utilizați Windows și au creat o legătură ODBC către northwind Microsoft Baza de date Access numită Northwind.
<?php $dbh = odbc_connect('northwind', '', ''); if (!$dbh) { exit("Connection Failed: " . $dbh); } $sql_stmt = "SELECT * FROM customers"; $result = odbc_exec($dbh, $sql_stmt); if (!$result) { exit("Error accessing records"); } while (odbc_fetch_row($result)) { $company_name = odbc_result($result, "CompanyName"); $contact_name = odbc_result($result, "ContactName"); echo "<b>Company Name (Contact Person):</b> $company_name ($contact_name) <br>"; } odbc_close($dbh); ?>

