Как получить информацию об ошибках MySQLi в разных средах

В моей локальной / среде разработки запрос MySQLi работает нормально. Однако, когда я загружаю его в среду веб-хоста, я получаю эту ошибку:

Неустранимая ошибка: вызов функции-члена bind_param () для не-объекта в ...

Вот код:

global $mysqli;
$stmt = $mysqli->prepare("SELECT id, description FROM tbl_page_answer_category WHERE cur_own_id = ?");
$stmt->bind_param('i', $cur_id);
$stmt->execute();
$stmt->bind_result($uid, $desc);

Чтобы проверить мой запрос, я попытался выполнить запрос с помощью панели управления phpMyAdmin, и результат будет в порядке.

php,mysqli,prepared-statement,environment,error-reporting,

51

Ответов: 1


62 принят

Прежде всего, всегда иметь эту строку перед подключением MySQLi во всех ваших средах:

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

После этого все ошибки MySQL будут перенесены в исключения PHP. Исключение, которое не доступно, в свою очередь, приводит к фатальной ошибке PHP. Таким образом, в случае ошибки MySQL вы получите обычную ошибку PHP. Это немедленно сообщит вам об ошибке. Трассировка стека приведет вас к тому месту, где произошла ошибка.

Обратите внимание, что вы должны уметь видеть ошибки PHP вообще . И здесь действительно идет речь о разных средах:

  • На реальном сайте вам нужно заглянуть в журналы ошибок, поэтому настройки должны быть

    error_reporting(E_ALL);
    ini_set('display_errors', 0);
    ini_set('log_errors', 1);
  • Хотя на локальном сервере разработки все нормально делать ошибки на экране:

    error_reporting(E_ALL);
    ini_set('display_errors', 1);

И небольшой список того, что вы не должны :

  • Использовать оператор подавления ошибок ( @)
  • Используйте die()или echoили любую другую функцию, чтобы безошибочно печатать сообщение об ошибке на экране. PHP может все откликнуться, помощь не требуется.
  • Тестирование результата запроса вручную (например if($result)) просто не имеет смысла. Либо ваш запрос не удался, и вы уже получите исключение ошибки, либо все было в порядке, и нечего тестировать.
  • Используйте try..catch для повторения сообщения об ошибке. Снова PHP может сделать это лучше, лучше.
PHP, MySQLi, изготовленное заявление, охрана окружающей среды, ошибки отчетность,
Похожие вопросы