2013-03-25 138 views
1

當我添加WHERE語句時,我的select語句不起作用。PHP PDO SELECT涉及VARCHAR的SQL在涉及WHERE語句時不起作用

下面的代碼返回的東西:

$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)); 

我不知道爲什麼。你可能會認爲這是因爲沒有聲明對象,其「言」元素等於$的話,但...我可以運行這個循環與第一碼:

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

那是什麼?(:(字))?你在哪裏得到它?爲什麼你不使用正確的語法? – 2013-03-25 03:10:20

+0

爲什麼不直接把變量放在你的sql查詢中?這很難嗎? – 2013-03-25 03:21:25

+0

感謝您的幫助! – george 2013-03-25 03:25:09

回答

0

按PDO運作的,你可能不需要你額外PARAMS撇號。 PDO將根據變量的類型自動工作。所以這將工作正常。

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

謝謝,不知道我是怎麼錯過的...... – george 2013-03-25 16:57:32

+0

Atleast給出了投票的理由,所以人們可以理解他提出的錯誤。 ;) – 2013-03-25 19:17:13

-1

你可以試試下面這個:

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

它不會給你的結果,如果你使用()單引號內。

感謝