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.

  • 🔌 conectarea: mysql_connect deschide un link către MySQL server, iar mysql_select_db alege baza de date cu care va lucra.
  • 🗃️ Rularea interogărilor: mysqli_query execută instrucțiuni INSERT, SELECT, UPDATE și DELETE asupra bazei de date selectate.
  • 📄 Rezultatele lecturii: `mysqli_num_rows` numără rândurile returnate, iar `mysqli_fetch_array` citește fiecare rând într-un array pentru ieșire.
  • 🔄 BRUT Operaacțiuni: Combinate, aceste funcții creează, citesc, actualizează și șterg înregistrări, cele patru operațiuni de bază ale bazei de date.
  • 🛡️ Declarații pregătite: Legarea valorilor cu instrucțiuni pregătite oprește injecția SQL, spre deosebire de construirea de interogări prin concatenarea datelor introduse de utilizator.
  • 🧩 PDO și ODBC: PDO oferă o singură interfață pentru mai multe motoare de baze de date, în timp ce ODBC se conectează la surse precum Microsoft Acces.
  • 🤖 Asistență AI: Instrumentele de inteligență artificială pot converti codul MySQL vechi în PDO cu instrucțiuni pregătite și pot depana erorile de conexiune.

PHP MySQL Acces la baza de date

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.

PHP: MySQL funcţii

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);
?>

Întrebări frecvente

MySQL funcționează doar cu MySQL și oferă atât stiluri procedurale, cât și stiluri de obiect. PDO funcționează cu mai multe baze de date printr-o singură interfață și acceptă substituenți numiți. Ambele acceptă instrucțiuni pregătite; PDO este mai portabil între motoare.

Nu. Extensia originală mysql_* a fost eliminată în PHP 7. Folosiți mysql sau PDO în schimb. Ambele sunt întreținute activ, suportă instrucțiuni pregătite și protejează împotriva riscurilor de injectare ale vechii extensii.

Detectează eroarea și arată utilizatorului un mesaj generic în timp ce înregistrează detaliile în mod privat. Nu afișa ieșirea mysqli_error vizitatorilor, deoarece poate dezvălui nume de tabele și structuri utile unui atacator.

Da. Lipește scriptul MySQL, iar inteligența artificială îl poate rescrie folosind PDO, poate înlocui interogările concatenate cu parametri legați și poate adăuga gestionarea erorilor try-catch. RevVizualizați substituenții și testați fiecare interogare ulterior.

Da. Distribuiți eroarea și codul de conectare, iar inteligența artificială poate detecta acreditări greșite, o gazdă sau un port incorect, o bază de date lipsă sau un driver dezactivat, apoi poate sugera setările corecte de încercat.

Rezumați această postare cu: