Как получить ошибку mysqli в разных средах?

В моей среде LOCAL / DEV запрос mysqli выполняет ОК . Однако, когда я загружаю его в среду WEBHOST , я получил эту ошибку;

Неустранимая ошибка: вызов функции-члена 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, и результат будет в порядке .

Если какая-либо информация отсутствует, сообщите мне, чтобы я мог немедленно предоставить.

Прежде всего, всегда иметь эту строку перед подключением 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 может сделать это лучше, лучше.