Проблема запроса PDO - PullRequest
       8

Проблема запроса PDO

1 голос
/ 02 января 2009

Я обновляю некоторый код из старых функций mysql_ * в PDO. Он подключается без проблем, выполняет запрос без проблем, но набор результатов пуст. Предполагается, что PDO :: query () возвращает объект PDOStatement, но я получаю true в ответ. Об ошибках не сообщается.

Вот мой код:


try
{
    $DB = new PDO("mysql:host=localhost;dbname=dbname", "user", "pass");
    $stmt = $DB->prepare("SELECT * FROM report_clientinfo");
    $stmt->execute();
}catch(PDOException $e)
{
    echo $e->getMessage() . "\n";
}


echo gettype($stmt) . "\n";
if ($stmt) echo "true\n";
else echo "false\n";

$resultset = $stmt->fetchAll();

if(empty($resultset))
{
    exit("ERROR: getClientInfo query failed.");
}

$DB = null;

print_r($resultset);

Вывод, который я вижу:

объект правда ОШИБКА: сбой запроса getClientInfo.

Есть идеи, почему он не возвращает никаких результатов?

Ответы [ 2 ]

5 голосов
/ 02 января 2009
object  
true  
ERROR: getClientInfo query failed.

Мне кажется, что ваша PDOStatement $stmt переменная фактически является объектом, а не "true". Затем код печатает «true», когда видит, что $stmt не равно нулю, что и есть, потому что это объект.

Я рекомендую вам проверить возвращаемое значение с $stmt->execute(). У вас может быть ошибка SQL. Например, если вы неправильно написали имя таблицы, или таблица не существует в базе данных «dbname», к которой вы подключились, или пользователь, под которым вы вошли, не имеет права запрашивать эту таблицу.

Также проверьте $stmt->errorInfo(), чтобы получить более подробную информацию о любой произошедшей ошибке.

0 голосов
/ 02 января 2009

Мне немного неловко сообщать, что я указывал на неправильный DSN. Я думаю, это то, что я получаю за попытку узнать что-то новое всего за несколько часов сна после прогулки в канун Нового года. Спасибо за подсказку о методе PDOStatement :: errorInfo (), я раньше этого не замечал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...