PDO WHERE子句不与OR一起使用

时间:2014-06-05 15:31:30

标签: pdo prepared-statement where

我使用它并且工作正常。

$stmt1 = $conn->prepare("SELECT * FROM Authors WHERE First=:id");
$stmt1->bindParam(':id', $_GET['name'], PDO::PARAM_STR);
blah blah...

当我更改WHERE' First =:id'到'最后=:id'但是当我在下面包含一个OR子句时它会失败。

$stmt1 = $conn->prepare("SELECT * FROM Authors WHERE First=:id OR Last=:id");
$stmt1->bindParam(':id', $_GET['name'], PDO::PARAM_STR); 

我在Stack#3030650中找到了这个。

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

由于这些看起来一样,我忽略了什么。

感谢您的任何建议。

1 个答案:

答案 0 :(得分:2)

我会将它绑定两次,可能使用不同的占位符,即使它是相同的值:

$query = "SELECT * FROM REGISTRY WHERE firstname = :fname OR lastname = :lname";
$stmt = $dbh->prepare($query);
$stmt->bindParam(':fname', $name); 
$stmt->bindParam(':lname', $name);