0

Cookie (お気に入りの項目) を使用してクエリを作成しようとしています

<?php

    $favnum=0;
$FavList = 'WHERE ';
foreach ($_COOKIE as $name => $value) {
                   if ($value ==  '1'){
                    if($name != 'PHPSESSID'){
                        $FavList .= 'num = "'.$name.'" OR ';
            $favnum++;
                    }
               }
            }
$FavList = substr($FavList, 0,-3).' ';
$FavList = 'SELECT * FROM RETS '.$FavList; 
    ?>

FavNum は多少冗長ですが、フォールバックできるお気に入りが 0 の場合に備えて、単にお気に入りの数をカウントしています。

クエリは次のようにエコーします。

SELECT * FROM RETS WHERE 
num = "E2671855" OR 
num = "E2659557" OR 
num = "E2689932" OR 
num = "E2670962" OR 
num = "E2684630" OR 
num = "E2677355"

ご覧のとおり、上記のコードはシリアル番号に対応する 6 つの数字です。このクエリをコピーして Navicat に直接貼り付けると、クエリは 6 つの結果を返します。

続き:

<?php
$sql = $FavList;
    $results = mysql_query($sql) or die(mysql_error());
    $row = mysql_fetch_array($results) or die(mysql_error());

while($row = mysql_fetch_array($results)){
    echo 'Things that make me go Hmmm....<br/>';
} ?>

これにより、次のエコーが返されます。

Things that make me go Hmm....
Things that make me go Hmm....
Things that make me go Hmm....
Things that make me go Hmm....
Things that make me go Hmm....

ファイルには他の部分はありません。現在、クエリの php ファイルを取得し、トラブルシューティングのためにファイルのこの特定の部分にそれを削除しました...ご覧のとおり、5 つの結果しか得られません。クエリ エディターは 6 つの結果を取得しています。

それで、これが問題を絞り込むのに役立つかどうかわからないいくつかのテストを行いました...

while($row != mysql_fetch_array($results)) {echo '<script>alert(".$row['num'].")</script>';}

番号返してます。もちろんループ内です。永遠に止まることはありませんが、番号が戻ってきます...そして、はい...それは私が見逃しているものです。

4

1 に答える 1

0

PHP コードを以下に変更します。

<?php
    $sql = $FavList;
    $results = mysql_query($sql) or die(mysql_error());
    $row = mysql_fetch_array($results) or die(mysql_error()); // this is the missing data
    echo 'Things that make me go Hmmm....<br/>'; // print the missing data

    while($row = mysql_fetch_array($results)){
        echo 'Things that make me go Hmmm....<br/>';
    } 
?>

または、これを行うこともできます:

<?php
    $sql = $FavList;
    $results = mysql_query($sql) or die(mysql_error());

    if (mysql_num_rows($result) > 0) {
        while($row = mysql_fetch_array($results)){ // all data will be fetch, including the missing data
            echo 'Things that make me go Hmmm....<br/>';
        } 
    }
?>

これはうまくいくはずです。

于 2013-07-23T03:46:49.887 に答える