В моей среде 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)
), это просто не имеет смысла. Или ваш запрос не удался, и вы уже получите исключение ошибки, или все было в порядке, и нет ничего, чтобы проверить