2014-02-01 2 views
1

не получив результатов, независимо от того, насколько широка мой запрос PHP: 5,3 Sqlite3: 3,6 PDO: 5.3.3 Я думаю, что это должно быть очень простой процесс, но даже глядя вокруг меня все еще не знаю, почему я получаю 0 результатов. Вот мой код:Sqlite PDO запрос не возвращает результатов

<?php 
$sqlite = new PDO('sqlite:/example.db'); 
$result = $sqlite->query('SELECT * from foo'); 
if(!$result) 
{ 
    echo 'fail'; 
    return false; 
} 
?> 

Любые идеи о том, что я делаю неправильно? В таблице «foo» будет только четыре столбца, и этот тест db имеет только одну таблицу. Запуск запроса в sqlite отображает результаты в порядке.

Спасибо в продвижении.

+0

Вы получаете исключение? Также как вы получаете данные из '$ result' –

+0

Никаких исключений. Я еще не получаю переменную пустую, не имеет значения? –

+0

Хорошо, вы уверены, что данные есть? если нет исключения, таблица должна быть доступна и через PHP. Операция вставки может не выполняться в другом сеансе sqllite? –

ответ

4

Вы должны выполнить инструкцию сначала, чем получить результат.

Вы можете добавить блок try/catch вокруг вызова метода execute. и выполните некоторую обработку ошибок.

Вот пример улова Исключения. Не используйте его в качестве руководства по проектированию.

<?php 

try 
{ 
    $sqlite = new PDO('sqlite:/example.db'); 
} 
catch (PDOException $e) 
{ 
    echo 'Connection failed: ' . $e->getMessage(); 
} 

$statement = $sqlite->prepare('SELECT * from foo'); 
try 
{ 
    $statement->execute(); 
} 
catch(PDOException $e) 
{ 
    echo "Statement failed: " . $e->getMessage(); 
    return false; 
} 

$result = $statement->fetchAll(); 
print_r($result); 
?> 
+1

На самом деле я считаю, что вы получаете результат или нет, var должен быть правдой для данных. У меня есть это в try catch, и fetch следует за тестом, чтобы увидеть результат if $. Проблема оказалась проблемой прав, обнаруженной путем обнаружения исключения. Поэтому var все еще был пуст. Благодарю. –

+0

Я отредактировал свой ответ, чтобы дать лучшее руководство для отладки. Я сейчас здесь. :) – enterx

Смежные вопросы