2014-11-24 4 views
-1

Почему не работает код ниже?PHP PDOStatement методы подготовки и bindValue

$pdo = new PDO('mysql:dbname=_test;host=localhost','root', ''); 
$select=$pdo->prepare("SELECT * FROM test WHERE th=:name"); 
$select->bindValue(":name","1"); 
print_r($select); 

при печати $ выберите его результаты:

PDOStatement Object ([dbh] => PDO Object () [queryString] => SELECT * FROM test WHERE th=:name) 

спасибо!

+0

Вы не должны изменять исходный код с предложениями из ответов, поскольку это аннулирует ответ. – jeroen

ответ

3

Вы должны добавить обработку ошибок в вызовы базы данных, например, установив PDO для исключения исключений.

Ваша текущая проблема заключается в том, что вы на самом деле не execute() заявление:

$select->bindValue(":name","1"); 
$select->execute(); 

После этого вам нужно будет fetch() результатов из результирующего набора на самом деле увидеть значения в базе данных:

while ($row = $select->fetch()) { 
    // do something with the data 
} 

Редактировать: Чтобы включить исключения в PDO (вам пока не нужно их ловить, система будет вызывать ошибки необработанных исключений):

$pdo = new PDO('mysql:dbname=_test;host=localhost','root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); 
+0

Я добавил it.it тоже не работает! – John

+0

@WEBDESIGNER Вы извлекаете строки и добавили ли вы обработку ошибок? – jeroen