Sqlite在执行时显示错误

时间:2019-06-24 09:53:42

标签: php 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中的boolean上的execute():5堆栈跟踪:#0 {main}   在第5行的/html/waterlevel.php中抛出

1 个答案:

答案 0 :(得分:1)

您正在execute()上调用$in,该电话本应包含准备好的插入语句。该错误表明不是,而是布尔值。如果您在手册中查看PDO::prepare()的返回值,它会显示:

  

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

所以insert语句出了点问题。通常,我会在该调用之后直接放置print_r($db->errorInfo());,以查看错误是什么。您可以尝试一下,看看到那里出错了吗?

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