2010-06-13 4 views
2

Je n'arrive pas à comprendre comment utiliser les instructions préparées lorsque vous devez faire correspondre une valeur à plusieurs colonnes à la fois.Clause WHERE confusion avec PDO

En d'autres termes ce lieu de le faire:

$stmt = $dbh->prepare("SELECT * FROM REGISTRY where name = ?"); 
$stmt->bindParam(1, $name); 

Je voulais faire: '?'

$stmt = $dbh->prepare("SELECT * FROM REGISTRY where firstname = ? or lastname = ?"); 

à la fois représentant la même chaîne.

Répondre

4

Essayez ...

$stmt = $dbh->prepare("SELECT * FROM registry WHERE firstname = :name OR lastname = :name;"); 
$stmt->bindParam(':name', $name); 
+0

Merci de bien vouloir! – Greg

1

Pourquoi ne pas simplement utiliser un paramètre nommé

$stmt = $dbh->prepare("SELECT * FROM REGISTRY WHERE firstname = :name OR lastname = :name"); 
$stmt->bindParam(':name', $name); 
0
$stmt = $dbh->prepare("SELECT * FROM registry WHERE firstname = ? 
OR lastname = ? ;"); 
$stmt->bindParam(1, $name); 
+1

Merci pour cet extrait de code, qui peut fournir une aide immédiate. Une explication appropriée [améliorerait considérablement] (// meta.stackexchange.com/q/114762) sa valeur éducative en montrant * pourquoi * ceci est une bonne solution au problème, et le rendrait plus utile aux futurs lecteurs avec des semblables, mais pas identique, des questions. S'il vous plaît [modifier] votre réponse pour ajouter une explication, et donner une indication des limites et des hypothèses qui s'appliquent. En particulier, comment cela lie-t-il les deux espaces réservés, plutôt que juste le premier? –