【问题标题】:PDO won't return results from a SQLite database, or any exceptionsPDO 不会从 SQLite 数据库返回结果或任何异常
【发布时间】:2015-07-10 18:45:42
【问题描述】:

所以我有一些我只是无法弄清楚的代码。我打开了错误报告,并且我有适当的 try/catch 块,但是下面的代码没有运行。当我运行这段代码时,我得到的只是来自var_dump($result)bool(false)

try
{
    $db = new PDO('sqlite:norming_database.db');
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e)
{
    echo $e->getMessage();
}

/*... some other stuff in between ...*/

try
{
    $query = "SELECT stimulusName
            FROM responses
            WHERE workerId LIKE :workerId";
    $stmt = $db->prepare($query);
    $stmt->bindParam(':workerId', $_GET['testWorkerId']);
    $stmt->execute();
    $result = $stmt->fetch();
}
catch(PDOException $e)
{
    echo "PDO Error: " . $e->getMessage();
}

echo "<pre>" . var_dump($result) . "</pre>";

我没有收到任何异常或错误。最重要的是,如果我在我的数据库管理器 (Valentia Studio) 中运行查询本身,它会返回我期望的结果。

我怀疑我的代码中有一些拼写错误或某些内容,在反复阅读后我没有看到。这是怎么写的有什么明显的错误吗?

【问题讨论】:

  • 在您打开&lt;?php标签error_reporting(E_ALL); ini_set('display_errors', 1);后立即将错误报告添加到文件顶部
  • @JayBlanchard 是的,这就是我所拥有的!仍然没有错误或结果!这是我很长一段时间以来遇到的最令人沮丧的编码问题之一,我已经在这个问题上投入了 6 个小时......
  • 发布您的确切错误描述。
  • 我没有得到任何错误。我运行这个确切的代码,唯一打印出来的是bool(false)。除此之外,no 错误已经产生;代码只是不起作用。
  • 我怀疑是查询。从技术上讲,它读取SELECT stimulusName FROM responses WHERE workerId LIKE 'your_get_var_here_if_it_exists' - 现在,我对 SQLite 了解不多,但是您在 Valentia Studio 中使用的实际查询是什么? LIKE 查询没有使用任何通配符,除非您通过 GET 发送了一些不好的东西?

标签: php sqlite pdo


【解决方案1】:

$query = "SELECT stimulusName FROM responses WHERE workerId LIKE '%" . :workerId . "%'");

【讨论】:

    猜你喜欢
    • 2014-02-25
    • 1970-01-01
    • 1970-01-01
    • 2016-10-23
    • 1970-01-01
    • 1970-01-01
    • 2021-08-07
    • 2018-06-27
    • 2012-11-21
    相关资源
    最近更新 更多