首页 > 解决方案 > Sqlite在执行时显示错误

问题描述

我正在编写一个 SQLite 简单的数据库表条目代码。执行时会显示错误。有人可以看到我在哪里错了吗?

  <?php 
$db = new PDO("sqlite:waterlevel");
$db->query('create table waterlevel(time integer, ip text, waterlevel text, station text, humidity text, temperature text)');
$in=$db->prepare('insert into waterlevel(time, ip, waterlevel, station, humidity, temperature) values(?, ?, ?, ?, ?, ?)');
$in->execute(array(time(), $_SERVER['REMOTE_ADDR'], $_GET[waterlevel], $_GET[station], $_GET[humidity], $_GET[temperature]));

print_r($db->errorInfo());
?>

错误:致命错误:未捕获错误:调用 /html/waterlevel.php:5 中布尔值的成员函数 execute() 堆栈跟踪:第 5 行 /html/waterlevel.php 中抛出的 #0 {main}

标签: phpsqlite

解决方案


您正在调用execute()应该$in包含准备好的插入语句。错误说它没有,它是一个布尔值。如果您查看手册中PDO::prepare()的返回值,它会说:

如果数据库服务器成功准备语句,PDO::prepare() 返回一个 PDOStatement 对象。如果数据库服务器无法成功准备语句,则 PDO::prepare() 返回 FALSE 或发出 PDOException(取决于错误处理)。

所以插入语句有问题。通常我会print_r($db->errorInfo());在那个调用之后直接放,看看错误是什么。您可以尝试一下,看看您遇到了什么错误吗?

乍一看,我看不出插入语句本身有什么问题。可能是 SQLite 不喜欢使用time,因为有一个具有该名称的函数,但我不确定。我真的无法猜测您的服务器上会出现哪个错误。


推荐阅读