Запрос Mysqli работает только на localhost, а не на веб-сервере

Я изменил некоторые из моих старых запросов на структуру Mysqli для повышения производительности. Все работает нормально на localhost, но когда я загружаю его на веб-сервер, он ничего не выводит. После подключения я проверяю наличие ошибок и их нет. Я также проверил установленные модули php и включен mysqli.

Я уверен, что он создает соединение с базой данных, так как ошибки не отображаются. (когда я изменил строку имени базы данных, она дала ошибку)

Вывод запроса на веб-сервере отсутствует, который выглядит так:

$mysqli = new mysqli("server", "user", "password"); if (mysqli_connect_errno()) { printf("Can't connect Errorcode: %s\n", mysqli_connect_error()); exit; } // Query used $query = "SELECT name FROM users WHERE id = ?"; if ($stmt = $mysqli->prepare("$query")) { // Specify parameters to replace '?' $stmt->bind_param("d", $id); $stmt->execute(); // bind variables to prepared statement $stmt->bind_result($_userName); while ($stmt->fetch()) { echo $_userName; } $stmt->close(); } } //close connection $mysqli->close(); 

Как я уже сказал, этот код отлично работает на моем локальном сервере, а не в Интернете. Проверял журналы ошибок, и нет ничего, поэтому все указывает на хорошее соединение. Все таблицы существуют также и т. Д. Любые идеи, потому что это заставило меня застрять! Кроме того, если я получу эту работу, будут ли выполняться все мои другие запросы? Или мне нужно будет заставить их использовать платформу mysqli? Заранее спасибо.

РЕДАКТИРОВАТЬ:

Хорошо, я сделал некоторую «отладку», чтобы увидеть, что происходит. В таблице я запрашиваю данные, соответствующие запросу. Я сделал следующее, чтобы проверить заявление о подготовке:

 echo "debug 1"; if ($stmt = $mysqli->prepare("$shiftQuery")) { echo "debug 2"; printf("Error: %s.\n", $stmt->error); etc... } 

Таким образом, в основном он должен выводить «отлаживать 1» до того, как будет подготовлен статус (что он делает). Затем после этого следует выводить «debug 2» и любые возникшие ошибки.

Проблема здесь где-то, так как она не достигает строки debug 2 в инструкции IF. Поскольку детали подключения в порядке, я не могу понять, почему объект $ mysqli не будет создан. Это дает кому-нибудь дальнейшие идеи ???

благодаря

Каждый вызов метода mysqli / stmt может завершиться неудачей. Вы должны проверить каждый.
Попробуйте с помощью error_reporting (E_ALL) и, возможно, display_error = On

 <?php error_reporting(E_ALL); ini_set('display_errors', 1); // passing database name as fourth parameter $mysqli = new mysqli("server", "user", "password", 'dbname'); if (mysqli_connect_errno()) { printf("Can't connect Errorcode: %s\n", mysqli_connect_error()); exit; } // Query used $query = "SELECT name FROM users WHERE id = ?"; if ( false===($stmt=$mysqli->prepare("$query")) ) { echo 'mysqli::prepare failed: ', htmlspecialchars($mysqli->error); die; } // Specify parameters to replace '?' $rc = $stmt->bind_param("d", $id); if ( !$rc ) { echo 'bind_param failed: ', htmlspecialchars($stmt->error); die; } echo '<pre>Debug: execute()</pre>'; $rc = $stmt->execute(); if ( !$rc ) { echo 'execute failed: ', htmlspecialchars($stmt->error); die; } echo '<pre>Debug: bind_result()</pre>'; // bind variables to prepared statement $rc = $stmt->bind_result($_userName); if ( !$rc ) { echo 'bind_result failed: ', htmlspecialchars($stmt->error); die; } echo '<pre>Debug: fetch()</pre>'; while ($stmt->fetch()) { echo 'username: ', $_userName; } echo '<pre>Debug: stmt close()</pre>'; $stmt->close(); echo '<pre>Debug: mysqli close()</pre>'; $mysqli->close(); 

Пользовательское разрешение MySQL зависит от хоста – он может дать пользователю1 из localhost и user1 с другого разрешения другого хоста.

 GRANT ALL ON *.* TO user@'%' IDENTIFIED BY 'password'; 

Рамка Mysqli не улучшает производительность.
Проверка ошибок должна выполняться не только после подключения, но и после выполнения каждого запроса.

Проверьте $stmt->error для ошибок.
Или попробуйте проверить исключенное исключение

Является ли Id целым числом? Я обычно запускаю свой mysqli как

 $sql = "SELECT name FROM users WHERE id = ?"; if($stmt = $mysqli->mysqli->prepare($sql)){ $stmt->bind_param("i", $id); if($stmt->execute()){ $stmt->bind_result($name); $stmt->store_result(); if($stmt->fetch()){ return $name; }else{ return 'Not Found'; } }else{ return 'Execute Error'; } }else{ return 'SQL Error'; } 

надеюсь, это поможет