私のマシンで正常に動作するものは、本稼動サーバー上で失敗しています。なぜbind_resultの後でmysqliが停止するのですか?
次のコードを出力「」と「は、tryブランチを開始します」と、それはそれです。それはそれ以後停止する。
$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;
}
}
、
問題は、ここで発生した自分のマシンでは、変数が束縛されていると私はなど$recPhotos->fetch()
を使用して行くことができますいくつかの行を出力しようとすると、内部にはという機能があります(期待どおりに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