添加WHERE语句时,我的select语句不起作用。
以下代码返回一些内容:
$sql = "SELECT * FROM statement";
$stmt = $dbconn->prepare($sql);
$stmt->execute(array(':words'=>$words));
但这不是:
$sql = "SELECT * FROM statement WHERE words='(:words)'";
$stmt = $dbconn->prepare($sql);
$stmt->execute(array(':words'=>$words));
我不确定为什么。您可能认为这是因为没有语句对象,其“words”元素等于$ words,但有...我可以使用第一个代码运行此循环:
foreach ($stmt as $s)
{
var_dump($words, $s['words'], ($words==$s['words']));
echo "<br>";
}
这是我的输出:
string(4) "test" string(5) "test1" bool(false)
string(4) "test" string(5) "test2" bool(false)
string(4) "test" string(4) "test" bool(true)
那是什么交易?我不知道为什么这不起作用。如果我做的事非常愚蠢,请告诉我。
答案 0 :(得分:0)
根据PDO的工作原理,你的params可能不需要额外的撇号。 PDO会根据变量的类型自动运行。所以这样可以正常工作。
$sql = "SELECT * FROM statement WHERE words=:words";
$stmt = $dbconn->prepare($sql);
$stmt->execute(array(':words'=>$words));
答案 1 :(得分:-1)
您可以尝试以下方法:
$sql = "SELECT * FROM statement WHERE words in (':words')";
$statement->execute(array(':words' => $words));
如果您在单引号内使用(),则不会给您结果。
由于