Что-то, что отлично работает на моей машине, не работает на производственном сервере.Почему mysqli останавливается после bind_result?
следующие выходы код «» и «Begin попробовать филиал» и это все. После этого он останавливается. На моей машине, переменные связаны, и я могу продолжать использовать $recPhotos->fetch()
и т.д.
Проблема возникает здесь:
$recPhotos = GetPhotos($_SESSION['album_uid'], $getVipImages, $arrPaginationParams["currentPage"], $arrPaginationParams["photosPerPage"]);
try
{
echo($recPhotos->affected_rows); // Outputs '24'
echo("Begin try branch");
$recPhotos->bind_result($file_name, $is_vip);
echo("End try branch");
}
catch (Exception $e)
{
echo 'Exception caught: ', $e->getMessage(), "\n";
}
echo("Continue");
вызываемой функции следующим образом:
// Get photos from database
function GetPhotos($album_uid, $getVipImages,$page, $rows)
{
$objMySqli = GetDbConnection();
$page = ($page - 1) * 24;
if ($objMySqliQuery = $objMySqli->prepare("SELECT file_name, is_vip from album_pic where album_uid = ? AND is_vip = ? OR is_vip = 'N' order by is_vip DESC, file_name ASC LIMIT ?,? ;"))
{
$objMySqliQuery->bind_param('ssss', $album_uid, $getVipImages, $page, $rows);
$objMySqliQuery->execute();
$objMySqliQuery->store_result();
return $objMySqliQuery;
}
else
{
// Error
printf("Prepared Statement Error: %s\n", $objMySqli->error);
return false;
}
}
Как ни странно, если я попытаюсь вывести несколько строк INSIDE функция, она работает (я получаю 24 строки, как ожидалось)
// Get photos from database
function GetPhotos($album_uid, $getVipImages,$page, $rows)
{
$objMySqli = GetDbConnection();
$page = ($page - 1) * 24;
if ($objMySqliQuery = $objMySqli->prepare("SELECT file_name, is_vip from album_pic where album_uid = ? AND is_vip = ? OR is_vip = 'N' order by is_vip DESC, file_name ASC LIMIT ?,? ;"))
{
$objMySqliQuery->bind_param('ssss', $album_uid, $getVipImages, $page, $rows);
$objMySqliQuery->execute();
$objMySqliQuery->bind_result($col1, $col2);
while ($objMySqliQuery->fetch())
{
printf("%s %s\n", $col1, $col2); // This will be executed 24 times
}
}
else
{
// Error
printf("Prepared Statement Error: %s\n", $objMySqli->error);
return false;
}
}
Любые идеи будут высоко оценены. Благодаря!
Совет: эхо не является функцией. Вам не нужно использовать скобки на нем. например 'echo 'Hi'' идентичен' echo (' Hi ') '. –
В вашем «рабочем» фрагменте вы удалили вызов 'store_result', попробуйте удалить его для неработающего фрагмента и посмотреть, работает ли он. Даже если это не так, я бы рекомендовал не использовать его, поскольку буферизирует весь набор результатов, который, если большой, может повлиять на производительность. –
Спасибо за советы. @MikePurcell: Я попытался удалить 'store_result', но это не сработало. Как я уже сказал, это работает без затруднений на моей локальной машине ... поэтому я полагаю, что это должно быть что-то в настройках производственного сервера или что-то в этом роде. Я немного потерян. – Kerans