For循环不返回所有值

时间:2013-03-26 13:35:00

标签: php mysql

我正在处理一段意图在Google Charts中实现的代码,但并非所有正在寻找的值都会被退回。

我需要从我的数据库中选择几个日期,我按如下方式选择它们:

$dates = mysql_fetch_row(mysql_query("SELECT DISTINCT date FROM participants WHERE subdomein='testdomain'")) or die(mysql_error());

然后我使用for循环来回显它们:

for ($i = 0; $i <= count($dates); $i++)
    {
        echo $dates[0].' ';
    }

在我的数据库中有3个(不同的)日期:24-03-201325-03-201326-03-2013,但这段代码会返回2x 24-03-2013。我在这做错了什么?

P.S。我也尝试了一个while循环但是无限循环或者崩溃我的页面。除此之外,我通过在数据库本身运行它来测试查询,并返回正确的结果,因此查询工作正常。

非常感谢帮助!

3 个答案:

答案 0 :(得分:1)

您需要在循环中使用mysql_fetch_row()

$result = mysql_query("SELECT DISTINCT date FROM participants WHERE subdomein='testdomain'");
while($date = mysql_fetch_row($result))
{
    echo $date[0];
}

您还应注意,不推荐使用mysql_*系列函数。如果可能,您应该避免使用它们,并研究MySQLi或PDO等替代方案。

答案 1 :(得分:0)

试试这个:mysql_fetch_row()只提取一行,如果您需要所有行,请使用mysql_fetch_assoc()

$sql = mysql_query("SELECT DISTINCT date FROM participants WHERE subdomein='testdomain'");

while($dates = mysql_fetch_assoc() ($sql)){
   print_r($dates);
}

参考:http://php.net/manual/en/function.mysql-fetch-row.php

http://www.php.net/manual/en/function.mysql-fetch-assoc.php

答案 2 :(得分:0)

mysql_fetch_row仅返回查询实际结果中的一条记录。您必须多次调用它,然后返回null

$res = mysql_query(...);

while (($record = mysql_fecth_row($res)) !== null) {
    print_r($record[0]);
}

请注意,mysql_*函数已弃用,不应再使用了。