Maison >développement back-end >tutoriel php >Comment mettre à jour en toute sécurité une base de données MySQL à l'aide de l'extension MySQLi en PHP ?

Comment mettre à jour en toute sécurité une base de données MySQL à l'aide de l'extension MySQLi en PHP ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-15 01:04:18210parcourir

How to Securely Update a MySQL Database Using the MySQLi Extension in PHP?

Exemple de code d'extension MySQL parfait

L'objectif de cette question est de fournir un exemple de code PHP concis et sécurisé utilisant l'extension MySQL. Le code doit éviter les erreurs courantes associées aux fonctions mysql_*, notamment :

  • Injection SQL
  • Rapport d'erreurs interrompues
  • Injections de scripts intersites (XSS)

Code Exemple :

<?php

header('Content-type: text/html; charset=utf-8');
error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 1);

$config = [
    'host' => '127.0.0.1',
    'user' => 'my_user',
    'pass' => 'my_pass',
    'db' => 'my_database'
];

$connection = @mysql_connect($config['host'], $config['user'], $config['pass']);

if (!$connection) {
    trigger_error('Unable to connect to database: ' . mysql_error(), E_USER_ERROR);
}

if (!mysql_select_db($config['db'])) {
    trigger_error('Unable to select db: ' . mysql_error(), E_USER_ERROR);
}

if (!mysql_set_charset('utf8')) {
    trigger_error('Unable to set charset for db connection: ' . mysql_error(), E_USER_ERROR);
}

$result = mysql_query(
    'UPDATE tablename SET name = "' . mysql_real_escape_string($_POST['name']) . '" WHERE id = "' . mysql_real_escape_string($_POST['id']) . '"'
);

if ($result) {
    echo htmlentities($_POST['name'], ENT_COMPAT, 'utf-8') . ' updated.';
} else {
    trigger_error('Unable to update db: ' . mysql_error(), E_USER_ERROR);
}
?>

Explication :

  • Ce code se connecte à la base de données MySQL à l'aide de mysql_connect() et spécifie la base de données à utiliser avec mysql_select_db ().
  • La fonction mysql_set_charset() est utilisée pour définir le jeu de caractères pour la connexion à UTF-8.
  • La requête de mise à jour SQL est construite à l'aide d'espaces réservés et de la fonction mysql_real_escape_string() pour empêcher l'injection SQL.
  • Le résultat de la requête est vérifié et le message "$name mis à jour." s'affiche si la mise à jour a réussi. Sinon, une erreur est déclenchée.
  • Le rapport d'erreurs est activé pour permettre un meilleur débogage pendant le développement. En mode production, ce paramètre peut être désactivé pour supprimer les messages d'erreur PHP destinés à l'utilisateur final.

Notez que cet exemple de code est fourni à titre de référence et ne doit pas être considéré comme une solution complète pour toutes les applications PHP. . Il est recommandé d'utiliser l'extension PDO pour les applications MySQL modernes, car elle offre une sécurité et des performances améliorées.

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