Sqlite показывает ошибку при выполнении - PullRequest
0 голосов
/ 24 июня 2019

Я пишу 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());
?>

Ошибка: фатальная ошибка: необученная ошибка: вызов функции execute () для логического значения в /html/waterlevel.php:5Трассировка стека: # 0 {main} добавляется в /html/waterlevel.php в строке 5

1 Ответ

1 голос
/ 24 июня 2019

Вы звоните execute() на $in, который должен содержать подготовленный оператор вставки.Ошибка говорит, что это не так, это логическое значение.Если вы посмотрите на возвращаемое значение PDO :: prepare () в руководстве, оно говорит:

Если сервер базы данных успешно готовит инструкцию, PDO :: prepare () возвращает объект PDOStatement.Если сервер базы данных не может успешно подготовить оператор, PDO :: prepare () возвращает FALSE или выдает исключение PDOException (в зависимости от обработки ошибок).

Так что с оператором вставки что-то не так.Обычно я ставлю print_r($db->errorInfo()); непосредственно после этого вызова, чтобы увидеть, что это за ошибка.Не могли бы вы попробовать и посмотреть, какую ошибку вы там получаете?

На первый взгляд, я не вижу ничего плохого в самом операторе вставки.Возможно, SQLite не нравится использование time, потому что есть функция с таким именем, но я не уверен.Я действительно не могу догадаться, какая ошибка появится на вашем сервере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...