В моей локальной среде / среде разработки 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, и результат в порядке.
Прежде всего, всегда иметь эту строку, прежде чем 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)
) просто не имеет смысла. Либо ваш запрос не удался, и вы уже получите исключение ошибки, либо все было в порядке и тестировать нечего.Я не думаю, что вы создали объект.
$ mysqli = new mysqli (‘localhost’, ‘my_user’, ‘my_password’, ‘world’);
но я действительно рекомендую вместо этого использовать PDO.