【问题标题】:Not getting All Results from SQL Query未从 SQL 查询中获取所有结果
【发布时间】:2013-07-23 03:43:46
【问题描述】:

我正在尝试使用 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>';}

我要回一个号码。当然它在循环中。永远不停,但是我得到了一个号码......是的......它是我失踪的那个。

【问题讨论】:

    标签: php mysql cookies missing-data missing-cookies


    【解决方案1】:

    将您的 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/>';
            } 
        }
    ?>
    

    这应该可行。

    【讨论】:

    • 你知道..我不知道为什么简单地复制和粘贴你的代码会起作用....我一直在花一些时间试图找出不同之处以供将来参考。我使用了你给我的底部选项并删除了 if 语句......它有效吗?嗯......嗯,非常感谢......我也很欣赏你的回答速度。
    • 欢迎安德鲁。如果这有助于您的好奇心,我会更新我的答案以指出丢失的数据。 ;-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-19
    • 1970-01-01
    • 2012-07-21
    • 2021-01-07
    • 2017-10-05
    • 1970-01-01
    相关资源
    最近更新 更多