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:5 中布尔值的成员函数 execute() 堆栈跟踪:第 5 行 /html/waterlevel.php 中抛出的 #0 {main}
解决方案
您正在调用execute()
应该$in
包含准备好的插入语句。错误说它没有,它是一个布尔值。如果您查看手册中PDO::prepare()的返回值,它会说:
如果数据库服务器成功准备语句,PDO::prepare() 返回一个 PDOStatement 对象。如果数据库服务器无法成功准备语句,则 PDO::prepare() 返回 FALSE 或发出 PDOException(取决于错误处理)。
所以插入语句有问题。通常我会print_r($db->errorInfo());
在那个调用之后直接放,看看错误是什么。您可以尝试一下,看看您遇到了什么错误吗?
乍一看,我看不出插入语句本身有什么问题。可能是 SQLite 不喜欢使用time
,因为有一个具有该名称的函数,但我不确定。我真的无法猜测您的服务器上会出现哪个错误。
推荐阅读
- python - 使用 python flask stripe payment 限制对网页的访问
- c - C program help / If, Else If
- keychain - 从搜索列表中删除钥匙串?
- ios - IGListkit 网络责任
- android - 如何获取免费应用程序的免费天气数据?OpenWeatherMap 限制为 60 次调用/分钟
- php - Laravel 保存方法不更新记录
- terraform - Terraform Enterprise 模块文件位置错误
- vba - 如何使用outlook vba将html内容附加到word中
- python - 在 Sklearn 的 SVC 中,当标签大小很大时,为什么训练时间与最大迭代不严格线性?
- node.js - 使用 Mongo 聚合有条件地计算集合中的外部字段