Maison >développement back-end >tutoriel php >bindParam vs bindValue : quelle est la principale différence dans le PDO de PHP ?

bindParam vs bindValue : quelle est la principale différence dans le PDO de PHP ?

DDD
DDDoriginal
2024-12-18 16:04:24237parcourir

bindParam vs. bindValue: What's the Key Difference in PHP's PDO?

Comprendre la distinction entre bindParam et bindValue

Question :

Quelle est la différence fondamentale entre PDOStatement::bindParam() et PDOStatement::bindValue()?

Réponse :

Selon l'entrée manuelle PDOStatement::bindParam, la distinction clé réside dans le comportement de référencement des deux méthodes. bindParam lie les variables en tant que références, tandis que bindValue lie les valeurs des variables. Ce comportement de référencement entre en jeu lors de l'exécution de PDOStatement::execute().

bindParam Exemple :

Considérez le code suivant :

$sex = 'male';
$s = $dbh->prepare('SELECT name FROM students WHERE sex = :sex');
$s->bindParam(':sex', $sex); // bind the variable using bindParam
$sex = 'female';
$s->execute(); // execute with WHERE sex = 'female'

Ici, bindParam lie $sex comme référence. Lorsque l'instruction s'exécute, elle fait référence à la valeur actuelle de $sex, qui est devenue « femelle ». Par conséquent, la requête récupérera les résultats pour les étudiantes « féminines ».

Exemple de bindValue :

Examinons maintenant un exemple similaire utilisant bindValue :

$sex = 'male';
$s = $dbh->prepare('SELECT name FROM students WHERE sex = :sex');
$s->bindValue(':sex', $sex); // bind the variable's value using bindValue
$sex = 'female';
$s->execute(); // execute with WHERE sex = 'male'

Dans ce cas, bindValue lie la valeur de $sex au moment de la liaison, qui est « mâle ». Ainsi, la requête récupérera toujours les résultats pour les étudiants « de sexe masculin », même si la valeur de $sex est modifiée ultérieurement. Cela démontre le comportement de non-référencement de bindValue.

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