Возникла проблема с подготовленным оператором, когда не возвращаются результаты. Изучив общий журнал запросов MySql, я могу увидеть, где выполняется соединение, но, похоже, запрос никогда не выполнялся.
После добавления mysqli_report(MYSQLI_REPORT_ALL) возвращается следующее сообщение об ошибке:
Unknown prepared statement handler (4) given to mysqld_stmt_execute
Ниже приведен код, выполняющий подготовленный оператор:
$something_in = 'a-string-of-text';
if ($stmt = $this->prepare("SELECT first, last, phone FROM people WHERE something=? ORDER BY last ASC")){
try{
if (!$stmt->bind_param('s', $something_in)) {
die('bind_param() failed: ' . htmlspecialchars($stmt->error));
}
$stmt->execute();
$stmt->bind_result($first, $last, $something, $phone);
while($stmt->fetch()){
$returnArray[] = array(
'first_name' => $first,
'last_name' => $last,
'something' => $something,
'phone' => $phone
);
}
$stmt->free_result();
$stmt->close();
return $returnArray; // we make it to here with a blank array instead of expected results
} catch (Exception $ex) {
return $ex->getMessage();
}
}
Кто-нибудь еще сталкивался с этой проблемой? Это кажется довольно странным.
Версия MySQL: 5.6
Версия PHP: 7
Еще одна полезная информация: мы используем netscaler, который действует как прокси между нашими серверами приложений и серверами баз данных. Я склонен полагать, что это могло быть причиной зависания.
РЕДАКТИРОВАТЬ
Подтверждено, что это связано с нашим прокси-сервером netscaler, поскольку подключение сервера приложений напрямую к серверу db решает проблему. Отправлю решение, как только причина будет определена.
Может, там нужен store_result()как я указал мне на днях
С помощью включение исключений в mysqli можно обнаружить и решить множество проблем, поэтому ошибки не так легко игнорировать.
Обновленный вопрос с результатами, полученными после включения исключений в mysqli.






Решение для этого конкретного граничного случая еще не найдено. Однако отказ от mysqli и использование библиотеки php PDO разрешил дилемму на короткий срок.
Попытайтесь проверить ошибки mysqli по пути.