为啥我的查询结果只输出一行?

Posted

技术标签:

【中文标题】为啥我的查询结果只输出一行?【英文标题】:Why is the result of my query only outputting one row?为什么我的查询结果只输出一行? 【发布时间】:2015-05-05 22:55:44 【问题描述】:

我正在从我的数据库中禁用 jQuery UI 日期选择器中的日期,而我的代码几乎可以正常工作,唯一的问题是它只从数据库中读取一行。目前我在数据库中有两个预订,因此日期选择器中应该有两个单独的预订,其中日期被禁用但只有一个。有人能看出我哪里出错了吗?

     <?php
    $bookeddates = "SELECT fromdate, todate FROM messages WHERE listing_id = '".$_GET['listingid']."'";
        $resultbookeddates = mysql_query($bookeddates) or die(mysql_error() . "<br>" . $bookeddates);
        $date_list = array();
        while ($rowbookeddates = mysql_fetch_assoc($resultbookeddates)) 


            $from = date('Y-n-j', strtotime($rowbookeddates['fromdate']));
            $to = date('Y-n-j', strtotime($rowbookeddates['todate']));

            $start_time = strtotime($from);
            $end_time = strtotime($to);
            $date_list[] = $from;

            $current_time = $start_time;

            while($current_time < $end_time) 
                //Add one day
                $current_time += 86400;
                $date_list[] = date('Y-n-j',$current_time);
            

            $date_list[] = $to;   

        ?>

<script type="text/javascript">
    var bookedDays = <?php echo json_encode($date_list); ?>;
</script>  

已解决,问题实际上是存储在 JavaScript 变量中的内容。上面的代码反映了工作代码。

【问题讨论】:

你怎么知道只提取了一行?您一一获取所有行,并不断覆盖 $from 和 $to。获取所有行后,您只需在其余代码中使用最后的 $from 和 $to。 您是否能够验证仅运行 SQL 查询会返回两行?你可以试试吗?或者尝试在您的 while 循环中输出每个 $rowbookeddatesmysql_fetch_assoc 也已被弃用。你运行的是什么版本的 PHP? @kainaw - 我可以告诉我在数据库中我有两行具有不同的日期,并且只有一行日期被禁用。如何在其余代码中仅使用最后一个 $from 和 $to 来解决? 您正在使用这个listing_id = '".$_GET['listingid']."'" 等待多少条记录? 在你的帖子中更新你的代码,并显示你到目前为止的结果 【参考方案1】:

我不确定您的 while 循环括号应该放在哪里,但您需要将它们向下移动。

类似这样的:

<?php
    $bookeddates = "SELECT fromdate, todate FROM messages WHERE listing_id = '".$_GET['listingid']."'";
        $resultbookeddates = mysql_query($bookeddates) or die(mysql_error() . "<br>" . $bookeddates);
        while ($rowbookeddates = mysql_fetch_assoc($resultbookeddates)) 
            $from = date('Y-n-j', strtotime($rowbookeddates['fromdate']));
            $to = date('Y-n-j', strtotime($rowbookeddates['todate']));

            $start_time = strtotime($from);
            $end_time = strtotime($to);
            $date_list = array($from);

            $current_time = $start_time;

            while($current_time < $end_time) 
                //Add one day
                $current_time += 86400;
                $date_list[] = date('Y-n-j',$current_time);
            

            $date_list[] = $to;

    

    $date_list_res = '["' . implode('","', $date_list) . '"]';
?>
<script type="text/javascript">
    var bookedDays = <?php echo $date_list_res; ?>;
</script>

【讨论】:

赞成,只是因为这是发布问题的确切答案,即使使用具有未知数量的无序和未排序元素(日期)的数组对我来说看起来非常奇怪和无用:-) @gibberish - 谢谢你,我刚刚尝试过,但我仍然只得到一行输出【参考方案2】:

这段代码:

while ($rowbookeddates = mysql_fetch_assoc($resultbookeddates)) 

  $from = date('Y-n-j', strtotime($rowbookeddates['fromdate']));
  $to = date('Y-n-j', strtotime($rowbookeddates['todate']));

遍历结果集,将其值分配给 $from 和 $to,替换之前的值。循环结束后,您将获得遍历的 last 记录的“from”和“to”值。

您应该将结果放在一个数组中以供进一步处理,或者将处理代码包含在while 循环中。

【讨论】:

是的,这就是我想说的——+1 @MarianoD'Ascanio - 谢谢,我尝试在 while 循环中包含处理代码,但这似乎不起作用:/ 我将如何将结果放入数组中?

以上是关于为啥我的查询结果只输出一行?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的查询没有返回任何结果?

新手提问 python for循环问题 print (y) #这里为啥只输出一行?

在Dev c里运行成功并输出结果的 却在vs2010里不显示结果是为啥?

为我的 SQL 查询获取错误的输出 - 为啥会这样?

cmd脚本,截取某个命令输出结果的某一行之后重新输出至cmd页面,输出且仅输出那一行

为啥这个for循环只输出一次?