私のPHPスクリプトに問題があります。このスクリプトは2つの<ul>
を生成します.1つは画像で、もう1つはサムネイルです。 PHPは最初のwhileループを完全に実行しますが、サムネイル用の<ul>
は常に空に戻ります。私は不運にそれを介して作業してきた、と私はエラーを印刷するスクリプトを取得するように見えることはできません。助けて?2つの同じwhileループ関数が動作しません
include "../backend/connect.php";
$query = "select image_id from images where thumb != '';";
$result = mysql_query($query);
<div id="main">
<div id="container">
<ul>
<?php
while ($row = mysql_fetch_array($result)) {
$img_id = $row['image_id'];
?>
<li class="hidden" id="<?php print($img_id); ?>" style="background-image:url(/pull.php?id=<?php print($img_id);?>&thumb=false)"></li>
<?php } ?>
<li class="" id="focus"></li>
</ul>
</div>
</div>
<div id="side">
<div id="photos"><ul>
<?php
while ($row = mysql_fetch_array($result)) {
$img_id = $row['image_id'];
?>
<div class="imgDiv" id="<?php print($img_id); ?>" >
<li>
<img src="pull.php?id=<?php print($img_id);?>&thumb=true" class="thumbnail"/>
</li>
</div>
<?php
}
?>
</ul></div>
</div>
</div>
好奇心の念で、内容を配列にダンプするのではなく、内部ポインタをリセットして同じリソースを再利用することによるパフォーマンス上の利点はありますか? (自然に膨大な結果セットを除いて)ちょうど私がそのようにすることを考えたことがないように好奇心が強い... – Farray
実際のテストがなければわからないが、結果を追加の配列にダンプすると2倍になるだろう使用されるメモリは小さいが、結果はそれを設定する。 –
while($ row = mysql_fetch_array($ result))は、一度に1つの行をメモリにフェッチするだけなので、個々の行に必要なメモリを占有します。ループの前に配列にダンプすると、結果セットのすべての行の合計のうち、結果セットのポインタをリセットするためのパフォーマンスオーバーヘッドは最小限に抑えられます。結果セットから配列を作成するよりも少なくなります –