1

添加 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 的 statements 对象,但是有...我可以使用第一个代码运行此循环:

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) 

那么有什么关系呢?我不知道为什么这不起作用。如果我在做一些非常愚蠢的事情,请告诉我。

4

2 回答 2

0

根据 PDO 的工作原理,您可能不需要为参数添加额外的撇号。PDO 将根据变量的类型自动工作。所以这会很好。

$sql = "SELECT * FROM statement WHERE words=:words";
$stmt = $dbconn->prepare($sql);
$stmt->execute(array(':words'=>$words));
于 2013-03-25T06:32:38.873 回答
-1

你可以在下面试试这个:

$sql = "SELECT * FROM statement WHERE words in (':words')"; $statement->execute(array(':words' => $words));

如果您在单引号内使用 (),它不会给您结果。

谢谢

于 2013-03-25T03:20:20.933 回答