Функция "exec" класса PHP SQLite3 не возвращает false при сбое - PullRequest
0 голосов
/ 13 января 2012

Я использую SQLite3 и класс SQLite3, встроенный в PHP.Следующий код не работает так, как я ожидал, основываясь на других классах mysql, с которыми я знаком. manual говорит, что метод exec должен возвращать true, если запрос выполнен успешно, false при ошибке.Однако из того, что я вижу, похоже, что это не так.

$udb = new SQLite3('app.sqlite');

if($udb->exec("DELETE FROM users WHERE id = $del") != FALSE)
    $message = 'Deleted User';
 else
    $message = 'Could not delete the user.';

Я ожидаю, что если бы строка с таким идентификатором не существовала, запрос вернул бы false или 0или «0».Ни один из них не является точным.На самом деле, я не могу понять, что функция возвращает вообще.

Может кто-нибудь помочь с тем, как должен выглядеть этот блок проверки ошибок if?

Ответы [ 2 ]

4 голосов
/ 14 января 2012

$udb->changes() > 0 - это то, что вы ищете

http://php.net/manual/en/sqlite3.changes.php

0 голосов
/ 13 января 2012

Успешное выполнение запроса - это не то же самое, что возвращаемое FALSE при ошибке .

Если у вас неверный SQL-запрос, он завершится неудачно (запрос) и вернет false.

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