Maison > base de données > tutoriel mysql > le corps du texte

Les instructions préparées éliminent-elles le besoin de « mysql_real_escape_string() » en PHP ?

Linda Hamilton
Libérer: 2024-11-04 11:34:01
original
532 Les gens l'ont consulté

Do Prepared Statements Eliminate the Need for `mysql_real_escape_string()` in PHP?

Déclarations préparées et échappement : un exercice d'équilibre

Lors de l'utilisation d'instructions préparées en PHP, faut-il toujours utiliser mysql_real_escape_string() pour éviter Injection SQL ? Examinons une requête spécifique et sa mise en œuvre pour répondre à cette question.

Requête et mise en œuvre

<code class="php">$consulta = $_REQUEST["term"] . "%";

$sql = $db->prepare('select location from location_job where location like ?');

$sql->bind_param('s', $consulta);
$sql->execute();
$sql->bind_result($location);

$data = array();

while ($sql->fetch()) {
    $data[] = array('label' => $location);
}
?>

**The Dilemma**

The provided query aims to fetch locations that match the term entered in the $_REQUEST["term"] variable. While the usage of a prepared statement is commendable for preventing SQL injections, the implementation raises a query: is mysql_real_escape_string() still necessary in this case?

**The Verdict: No, but a Refinement is Suggested**

When using prepared statements, as long as they are employed correctly, they effectively shield against SQL injections. In this instance, mysql_real_escape_string() is redundant. However, a minor improvement can enhance the code's clarity and efficiency.

Rather than using bind_param('s', $consulta), it's more straightforward to pass parameters through the execute method, especially when utilizing the '?' placeholder. The updated code would be:
</code>
Copier après la connexion

$sql->execute([$consulta]);

Pourquoi c'est important

Les instructions préparées avec liaison de paramètres garantissent que les données externes ne peuvent pas manipuler la requête SQL. Cependant, n'oubliez pas que la liaison des paramètres SQL ne garantit pas à elle seule un affichage sécurisé au sein du HTML. Pour cela, il est crucial d'utiliser des fonctions telles que htmlspecialchars() avant de générer les résultats de la requête.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!