【问题标题】:Sqlite PDO query returns no resultsSqlite PDO 查询不返回任何结果
【发布时间】:2014-02-25 13:34:32
【问题描述】:

无论我的查询范围有多大,都没有得到任何结果 PHP: 5.3 Sqlite3:3.6 PDO:5.3.3 我认为这应该是一个非常简单的过程,但即使环顾四周,我仍然不知道为什么我得到 0 个结果。这是我的代码:

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

关于我做错了什么有什么想法吗? 'foo' 表只有四列,而这个测试数据库只有一个表。在 sqlite 中运行查询可以很好地显示结果。

【问题讨论】:

  • 你得到一个exception?另外,您如何从$result 获取详细信息
  • 没有例外。我还没有获取变量是空的,没关系?
  • 好的,你确定数据在吗?如果没有例外,表格应该可以通过你的 PHP 获得。插入操作可能未在您的其他 sqllite 会话中提交?
  • 我不确定您对插入操作的意思。我可以从命令行运行它并返回所有 7 行: sqlite example.db 'SELECT * from foo'
  • 运行异常:$sqlite-&gt;setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

标签: php sql sqlite pdo


【解决方案1】:

你必须先执行语句,然后才能获取结果。

您可以在执行方法调用周围添加 try/catch 块。并做一些错误处理。

这是一个捕获异常的示例。请勿将其用作设计指南。

<?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();
var_dump($result);
?>

【讨论】:

  • 其实我相信无论你是否获取结果,var 对于数据都应该是正确的。我在 try catch 中确实有它,并且 fetch 遵循测试以查看是否 !$result。这个问题原来是一个权利问题,是通过捕获异常发现的。因此 var 仍然是空的。谢谢。
  • 我已经编辑了我的答案,以便为调试提供更好的指导。我现在在这里。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-29
  • 2017-05-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多