簡體   English   中英

當涉及WHERE語句時,涉及VARCHAR的PHP PDO SELECT SQL不起作用

[英]PHP PDO SELECT SQL involving VARCHAR does not work when WHERE statement is involved

當我添加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) 

那怎么辦? 我不知道為什么這行不通。 如果我做的事情非常愚蠢,請告訴我。

根據PDO的工作原理,您可能不需要為參數附加撇號。 PDO自動運行取決於變量類型。 因此,這將正常工作。

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

您可以在下面嘗試:

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

如果在單引號中使用(),它將不會給您結果。

謝謝

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM