0

我正在尝试使用 Cookies(收藏项)构建查询

<?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 回答