時返回false我有這樣的方法:PDO獲取
protected function _getByColumn($columnName, $value)
{
$sql = "SELECT * FROM $this->__tableName
WHERE :column = :value";
$stmt = $this->__db->prepare($sql);
$stmt->execute(array(':value' => $value, ':column' => $columnName));
$val=$stmt->fetch(PDO::FETCH_OBJ);
var_dump($val); //getting boolean false
}
我做錯了什麼在我做的PDO調用的方式嗎?我輸出了$columnName
和$value
,還有echod $sql
,手動更換了:column
和:value
,並且一切正常。建議?
編輯:
string 'SELECT * FROM myTable
WHERE :column = ':value'' (length=61)
string 'blog_id' (length=9)
string 'a3sasidsf' (length=8)
所有值都符合預期。
檢查'$ this - > __ tableName'實際上是否存在,否則您將執行'SELECT * FROM WHERE ...'。並檢查'$ this - > __ db-> errorInfo',它包含服務器端錯誤消息。 – 2011-04-22 19:01:38
[如何從PDO擠出錯誤信息?](http://stackoverflow.com/questions/3726505/how-to-squeeze-error-message-out-of-pdo) – 2011-04-22 19:02:43
從技術上講,沒有錯誤信息,因爲沒有錯誤。由於沒有匹配的行,因此它返回false。但如果你做了'_getByColumn('foo','foo')'它總是會返回所有行...... – ircmaxell 2011-04-22 19:29:29