PHP MySQLFonctions : mysqli_query et mysqli_connect

โšก Rรฉsumรฉ intelligent

MySQLPHP, ainsi que d'autres mรฉthodes d'accรจs aux bases de donnรฉes, permet ร  un script PHP de se connecter ร  une base de donnรฉes, d'exรฉcuter des requรชtes et d'en lire les rรฉsultats. Ce guide aborde les fonctions principales de mysqli, des exemples complets d'opรฉrations CRUD, les requรชtes prรฉparรฉes pour la sรฉcuritรฉ, ainsi que les mรฉthodes d'accรจs alternatives PDO et ODBC.

  • ???? De liaison: mysqli_connect ouvre un lien vers le MySQL serveur, et mysqli_select_db choisit la base de donnรฉes avec laquelle travailler.
  • ๐Ÿ‡ง๐Ÿ‡ท Exรฉcution de requรชtes : mysqli_query exรฉcute des instructions INSERT, SELECT, UPDATE et DELETE sur la base de donnรฉes sรฉlectionnรฉe.
  • ๐Ÿ“„ Rรฉsultats de lecture : mysqli_num_rows compte les lignes renvoyรฉes, et mysqli_fetch_array lit chaque ligne dans un tableau pour l'affichage.
  • (I.e. Cru Operation : Ensemble, ces fonctions permettent de crรฉer, lire, mettre ร  jour et supprimer des enregistrements, soit les quatre opรฉrations de base d'une base de donnรฉes.
  • ๐Ÿ›ก๏ธ Dรฉclarations prรฉparรฉes : Lier des valeurs ร  des requรชtes prรฉparรฉes empรชche les injections SQL, contrairement ร  la construction de requรชtes par concatรฉnation des entrรฉes utilisateur.
  • ๐Ÿงฉ PDO et ODBC : PDO offre une interface unique pour de nombreux moteurs de bases de donnรฉes, tandis qu'ODBC se connecte ร  des sources telles queโ€ฆ Microsoft Accรจs.
  • ๐Ÿค– Assistance IA : Les outils d'IA peuvent convertir le code mysqli existant en PDO avec des requรชtes prรฉparรฉes et dรฉboguer les erreurs de connexion.

PHP MySQL Accรจs ร  la base de donnรฉes

PHP possรจde une riche collection de fonctions intรฉgrรฉes pour manipuler MySQL bases de donnรฉes.

Fonction PHP mysqli_connect

La fonction PHP mysqli_connect est utilisรฉe pour se connecter ร  une base de donnรฉes. MySQL serveur de base de donnรฉes.

Il a la syntaxe suivante.

<?php
$db_handle = mysqli_connect($db_server_name, $db_user_name, $db_password);
?>

ICI,

  • ยซ $db_handle ยป est la variable de ressource de connexion ร  la base de donnรฉes.
  • ยซ mysqli_connect(โ€ฆ) ยป est la fonction permettant la connexion ร  la base de donnรฉes PHP.
  • ยซ $db_server_name ยป est le nom ou l'adresse IP du serveur hรฉbergeant la base de donnรฉes. MySQL serveur.
  • ยซ $db_user_name ยป est un nom d'utilisateur valide dans la base de donnรฉes. MySQL serveur.
  • ยซ $db_password ยป est un mot de passe valide associรฉ ร  un nom d'utilisateur dans la base de donnรฉes. MySQL serveur.

Fonction PHP mysqli_select_db

La fonction mysqli_select_db permet de sรฉlectionner une base de donnรฉes.

Il a la syntaxe suivante.

<?php
mysqli_select_db($db_handle, $database_name);
?>

ICI,

  • ยซ mysqli_select_db(โ€ฆ) ยป est la fonction de sรฉlection de base de donnรฉes qui renvoie vrai ou faux
  • ยซ $db_handle ยป est le lien de connexion au serveur
  • "$database_name" est le nom de la base de donnรฉes

Fonction PHP mysqli_query

La fonction mysqli_query est utilisรฉe pour exรฉcuter SQL requรชtes.

Cette fonction peut รชtre utilisรฉe pour exรฉcuter les types de requรชtes suivants :

  • insรฉrer
  • Sรฉlectionner
  • Mises ร  jour
  • Supprimer

Il a la syntaxe suivante.

<?php
mysqli_query($db_handle, $query);
?>

ICI,

  • ยซ mysqli_query(โ€ฆ) ยป est la fonction qui exรฉcute les requรชtes SQL.
  • ยซ $db_handle ยป est le lien de connexion au serveur
  • ยซ $query ยป est la requรชte SQL ร  exรฉcuter

Fonction PHP mysqli_num_rows

La fonction mysqli_num_rows est utilisรฉe pour obtenir le nombre de lignes renvoyรฉes par une requรชte de sรฉlection.

Il a la syntaxe suivante.

<?php
mysqli_num_rows($result);
?>

ICI,

  • ยซ mysqli_num_rows(โ€ฆ) ยป est la fonction de comptage de lignes
  • "$result" est le jeu de rรฉsultats mysqli_query

Fonction PHP mysqli_fetch_array

La fonction mysqli_fetch_array est utilisรฉe pour extraire des tableaux de lignes ร  partir d'un ensemble de rรฉsultats de requรชte.

Il a la syntaxe suivante.

<?php
mysqli_fetch_array($result);
?>

ICI,

  • "mysqli_fetch_array(โ€ฆ)" est la fonction permettant de rรฉcupรฉrer des tableaux de lignes
  • ยซ $result ยป est le rรฉsultat renvoyรฉ par la fonction mysqli_query.

Fonction PHP mysqli_close

La fonction mysqli_close est utilisรฉe pour fermer une connexion ร  une base de donnรฉes ouverte.

Il a la syntaxe suivante.

<?php
mysqli_close($db_handle);
?>

ICI,

  • ยซ mysqli_close(โ€ฆ) ยป est la fonction PHP qui ferme la connexion.
  • ยซ $db_handle ยป est la ressource de connexion au serveur

PHP MySQL Exemples CRUD

Examinons des exemples pratiques qui tirent parti de ces fonctions. Ce tutoriel suppose la connaissance de MySQL et SQL ; si ces termes vous sont inconnus, veuillez consulter notre documentation. MySQL et des didacticiels SQL.

Nous allons crรฉer une base de donnรฉes simple appelรฉe my_personal_contacts avec une seule table. Connectez-vous ร  MySQL en utilisant votre outil d'accรจs prรฉfรฉrรฉ tel que MySQL Dans Workbench ou phpMyAdmin, crรฉez une base de donnรฉes nommรฉe my_personal_contacts, puis exรฉcutez le script ci-dessous pour crรฉer la table et y insรฉrer des donnรฉes fictives.

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

Lecture des enregistrements de la base de donnรฉes

Nous allons maintenant crรฉer un programme qui imprime les enregistrements de la base de donnรฉes.

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

L'exรฉcution du code ci-dessus renvoie les rรฉsultats illustrรฉs dans le diagramme ci-dessous.

PHP: MySQL Les fonctions

Insรฉrer de nouveaux enregistrements

Prenons maintenant l'exemple de l'ajout d'un nouvel enregistrement ร  notre table. Le code ci-dessous illustre cette implรฉmentation.

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

L'exรฉcution du code ci-dessus affiche le message ยซ Poseidon a bien รฉtรฉ ajoutรฉ ร  votre liste de contacts ยป. Retournez ร  l'exemple de requรชte SELECT et rรฉcupรฉrez ร  nouveau vos contacts pour vรฉrifier si Poseidon y figure.

Mise ร  jour des enregistrements

Prenons maintenant l'exemple de la mise ร  jour d'un enregistrement dans la base de donnรฉes. Supposons que Posรฉidon ait modifiรฉ son numรฉro de tรฉlรฉphone et son adresse รฉlectronique.

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

Suppression d'enregistrements

Prenons maintenant l'exemple de la suppression d'enregistrements dans une base de donnรฉes. Supposons que Vรฉnus ait obtenu une ordonnance restrictive ร  notre encontre et que nous devions supprimer ses coordonnรฉes de notre base de donnรฉes. base de donnรฉes.

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

Prรฉvention des injections SQL grรขce aux requรชtes prรฉparรฉes

Les exemples CRUD ci-dessus construisent des requรชtes en concatรฉnant des chaรฎnes de caractรจres. Lorsqu'une partie d'une requรชte provient d'une saisie utilisateur, cela ouvre la porte aux injections SQL. Les requรชtes prรฉparรฉes rรฉsolvent ce problรจme en envoyant la requรชte et les donnรฉes sรฉparรฉment, empรชchant ainsi toute modification de la structure de la requรชte par les entrรฉes utilisateur.

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

Ici, les points d'interrogation servent de marqueurs de substitution, et `bind_param` lie en toute sรฉcuritรฉ les valeurs du nom et de l'adresse e-mail. La base de donnรฉes les traite comme des donnรฉes ร  part entiรจre ; c'est pourquoi les requรชtes prรฉparรฉes, disponibles dans mysqli et PDO, sont la mรฉthode recommandรฉe pour exรฉcuter toute requรชte utilisant des donnรฉes saisies par l'utilisateur.

Objet d'accรจs aux donnรฉes PHP (PDO)

PDO est une classe qui nous permet de manipuler diffรฉrents moteurs de bases de donnรฉes tels que MySQL, PostgreSQLet MS SQL Server utilisant la mรชme interface.

Le code ci-dessous montre la mรฉthode d'accรจs ร  la base de donnรฉes ร  l'aide de l'objet PDO.

Remarque : le code ci-dessous suppose une connaissance du langage SQL, des tableaux, de la gestion des exceptions et de la boucle 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();
}
?>

ICI,

  • ยซ try{โ€ฆ}catch{โ€ฆ} ยป est le bloc de gestion des exceptions
  • ยซ $pdo = new PDO(โ€œmysqlโ€ฆโ€ crรฉe une instance de lโ€™objet PDO et transmet le pilote de base de donnรฉes, le nom du serveur et de la base de donnรฉes, lโ€™identifiant de lโ€™utilisateur et le mot de passe.
  • ยซ $pdo->setAttributeโ€ฆ ยป configure le mode dโ€™erreur PDO pour lever des exceptions
  • ยซ $pdo->exec('SET NAMESโ€ฆ') dรฉfinit le format d'encodage

Accรจs aux donnรฉes ODBC PHP

ODBC est l'acronyme de Open Database Connectivity. Sa syntaxe de base est la suivante.

<?php
$conn = odbc_connect($dsn, $user_name, $password);
?>

ICI,

  • ยซ odbc_connect ยป est la fonction intรฉgrรฉe de PHP
  • ยซ $dsn ยป est le nom de la source de donnรฉes ODBC.
  • ยซ $user_name ยป est facultatif et est utilisรฉ pour le nom d'utilisateur ODBC.
  • Le champ ยซ $password ยป est facultatif et sert au mot de passe ODBC.

L'exemple ci-dessous suppose que vous utilisez Windows et ont crรฉรฉ un lien ODBC vers le vent du nord Microsoft Base de donnรฉes Access nommรฉe 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);
?>

FAQ

mysqli ne fonctionne qu'avec MySQL PDO propose des styles de programmation procรฉdurale et objet. Il est compatible avec de nombreuses bases de donnรฉes via une interface unique et prend en charge les espaces rรฉservรฉs nommรฉs. Les deux systรจmes prennent en charge les requรชtes prรฉparรฉes ; PDO offre une meilleure portabilitรฉ entre les moteurs de recherche.

Non. L'extension mysql_* d'origine a รฉtรฉ supprimรฉe dans PHP 7. Utilisez plutรดt mysqli ou PDO. Ces deux bibliothรจques sont activement maintenues, prennent en charge les requรชtes prรฉparรฉes et protรจgent contre les risques d'injection de vulnรฉrabilitรฉs liรฉs ร  l'ancienne extension.

Interceptez l'erreur et affichez un message gรฉnรฉrique ร  l'utilisateur tout en consignant les dรฉtails de maniรจre confidentielle. Ne divulguez pas la sortie de mysqli_error aux visiteurs, car elle pourrait rรฉvรฉler les noms et la structure des tables, informations prรฉcieuses pour un attaquant.

Oui. Collez le script mysqli, et l'IA pourra le rรฉรฉcrire en utilisant PDO, remplacer les requรชtes concatรฉnรฉes par des paramรจtres liรฉs et ajouter une gestion des erreurs try-catch. RevExaminez les espaces rรฉservรฉs et testez chaque requรชte ensuite.

Oui. Partagez l'erreur et votre code de connexion, et l'IA pourra dรฉtecter les identifiants incorrects, un hรดte ou un port erronรฉ, une base de donnรฉes manquante ou un pilote dรฉsactivรฉ, puis vous suggรฉrer les paramรจtres corrigรฉs ร  essayer.

Rรฉsumez cet article avec :