Maison  >  Article  >  développement back-end  >  php modifier sql

php modifier sql

王林
王林original
2023-05-28 15:09:38455parcourir

PHP (Hypertext Preprocessor) est un langage de script open source largement utilisé pour le développement d'applications Web. Dans le développement PHP, la base de données est un composant très important et la modification des données SQL est une opération très courante. Cet article explique comment modifier SQL en PHP.

Qu'est-ce que SQL ?

SQL (Structured Query Language) est un langage standard de gestion de bases de données relationnelles (SGBDR). SQL est utilisé pour insérer, mettre à jour, supprimer et interroger des données dans la base de données. Il peut gérer des tables, des lignes et des colonnes dans une base de données relationnelle. Les logiciels de base de données tels que MySQL, Oracle, MS SQL Server et PostgreSQL prennent tous en charge le langage SQL.

Comment se connecter à la base de données ?

PHP fournit des extensions MySQLi et PDO intégrées, la connexion à la base de données nécessite l'utilisation de l'une de ces extensions.

  • Utilisez l'extension MySQLi :

$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Créer une connexion
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Vérifiez si la connexion a réussi
if ($conn) {

die("Connection failed: " . mysqli_connect_error());

}
echo "Connecté avec succès";

  • Utiliser l'extension PDO :

$dsn = "mysql:host=localhost;dbname=myDB";
$username = "username";
$password = "password";
// Créer une connexion
essayez {

$conn = new PDO($dsn, $username, $password);
// 设置 PDO 错误模式为异常
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected successfully";

} catch(PDOException $e ) {

echo "Connection failed: " . $e->getMessage();

}

Comment modifier les données SQL ?

En PHP, l'utilisation d'instructions SQL pour modifier des données nécessite l'utilisation de la méthode mysqli_query ou PDO::exec. Vous trouverez ci-dessous quelques exemples courants.

  • mysqli_query :

$sql = "UPDATE myTable SET column1 = 'value1', column2 = 'value2' WHERE id = 123";

if (mysqli_query($conn, $sql)) {

echo "Record updated successfully";

} else {

echo "Error updating record: " . mysqli_error($conn);

}

  • PDO::exec:

$sql = "UPDATE myTable SET column1 = 'value1', column2 = 'value2' WHERE id = 123";

essayez {

$conn->exec($sql);
echo "Record updated successfully";

} catch (PDOException $e) {

echo "Error updating record: " . $e->getMessage();

}

Il convient de noter que vous devez être très prudent lorsque vous modifiez des données. Surtout dans un environnement de production, vous devez vous assurer que vos instructions SQL s'exécutent correctement et ne corrompent pas les données.

Comment assurer la sécurité de SQL ?

Pour garantir la sécurité des instructions SQL, les attaques par injection SQL doivent être évitées. Les attaques par injection SQL sont l'une des attaques réseau les plus courantes. Les attaquants exploitent les vulnérabilités des pilotes de base de données pour injecter des instructions SQL dans la base de données. Les attaquants peuvent modifier, supprimer ou divulguer des données sensibles en injectant du code malveillant.

La meilleure façon d'éviter l'injection SQL est d'utiliser des instructions préparées. Lors de l'utilisation de la méthode de prétraitement, l'instruction SQL est analysée comme une requête, mais elle n'est pas exécutée. Les paramètres de requête seront envoyés au serveur de base de données. La requête tente ensuite de faire correspondre les paramètres et renvoie uniquement les résultats correspondants. En utilisant des instructions préparées, les attaques par injection SQL peuvent être efficacement évitées.

  • mysqli_prepare :

$sql = "UPDATE myTable SET column1 = ?, column2 = ? WHERE id = ?";
$stmt = mysqli_prepare($conn, $sql);
mysqli_stmt_bind_param($stmt, "ss s " , $value1, $value2, $id);

$value1 = "value1";
$value2 = "value2";
$id = 123;

if (mysqli_stmt_execute($stmt)) {

echo "Record updated successfully";

} else {

echo "Error updating record: " . mysqli_stmt_error($stmt);

}

  • Prétraitement PDO :

$sql = "UPDATE myTable SET column1 = :value1, column2 = :value2 WHERE id = :id";
$stmt = $conn->prepare($ sql);

$stmt->bindValue(':value1', $value1);
$stmt->bindValue(':value2', $value2);
$stmt->bindValue(':id' , $id);

$value1 = "value1";
$value2 = "value2";
$id = 123;

if ($stmt->execute()) {

echo "Record updated successfully";

} else {

echo "Error updating record: " . $stmt->errorInfo();

}

Les instructions préparées sont plus sûres que l'exécution directe d'instructions SQL car elles filtrent les caractères spéciaux dans l'entrée. Si vous n'utilisez pas d'instructions préparées, vous devez utiliser d'autres méthodes pour réduire le risque d'attaques par injection SQL, telles que htmlspecialchars, addlashes ou mysql_real_escape_string, etc.

Résumé

Cet article présente principalement comment modifier SQL en PHP et comment assurer la sécurité de SQL. Bien que les attaques par injection SQL soient l'une des cyberattaques les plus courantes, vous pouvez les éviter efficacement en utilisant des instructions préparées. PHP fournit de nombreuses extensions intégrées pour faciliter la gestion des bases de données relationnelles. J'espère que cet article vous sera utile.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn