PHP显示字符串0

时间:2013-03-26 16:02:58

标签: php mysql arrays loops

我需要帮助这个代码所有我需要的是向空的命中数据显示一个字符串“0”所以我想到的是第1天有3次点击而第2天有0次点击,我真的不知道如何显示0请帮帮我。谢谢

days || Hits
 1 - | | |- 3
 2 - | | |- 
 3 - | | |-
 4 - | | |- 
 5 - | | |- 5

这是代码:

$year = date("Y");
$month = $_POST['selected_date'];
if(!isset($month) or $_POST['selected_date'] == 0)
{
  $month = date("n");
}
 $num = cal_days_in_month(CAL_GREGORIAN, $month, $year);

    for($i = 1; $i <= $num; $i++)
    { 
     echo "<p >$i - ";

     $query = mysql_query("SELECT DATE_FORMAT(`LookbookLogDate`, '%m') as 'month', DATE_FORMAT(`LookbookLogDate`, '%d') as 'day',
COUNT(`LookbookLogID`) as 'total'
FROM LookbookLog
where Lookbook_LookbookID = $LookbookID and LookbookLogDate like '%2013-03%'
GROUP BY DATE_FORMAT(`LookbookLogDate`, '%m'), DATE_FORMAT(`LookbookLogDate`, '%d')");
        while($row = mysql_fetch_array($query))
        {
               $day = $row['day'];

           $total = $row['total'];

             if($day == $i) echo $total."</p>";
        }


    }

5 个答案:

答案 0 :(得分:1)

我会从数据库中获得零,因为有一个通用的SQL函数可以实现一个很好的解决方案:

SELECT
DATE_FORMAT(`LookbookLogDate`, '%m') as 'month',
DATE_FORMAT(`LookbookLogDate`, '%d') as 'day',
COALESCE(COUNT(`LookbookLogID`),0) as 'total'
FROM LookbookLog
{snip}

这意味着如果COUNT()的结果中没有值,则会选择0。然后你的echo语句将继续正常工作,而不会特别检查应用程序中的NULL情况。

答案 1 :(得分:0)

尝试使用empty()函数,empty()函数将许多事物视为真值,因为这些值的列表可以在这里查看http://php.net/manual/en/function.empty.php

$total = (empty($row['total'])?0:$row['total']);

<强>更新

您只需要执行以下操作即可获得所需的结果。

$total = ($row['total']?$row['total']:0);

答案 2 :(得分:0)

如果你echo 0它会在屏幕上显示0,但是如果你echo false它将不会显示它。现在您遇到的问题不是显示 0 ,而是显示 $ total 的值。如果您的查询返回空集,则$row['total']falsenull,因此echo falseecho null将不会显示任何内容。

检查以确保您的查询返回一些内容,$total使用var_dump保存所需的值以查看其类型。

你需要像

这样的东西
   $total = ! empty($row['total']) ? $row['total'] : 0;

答案 3 :(得分:0)

修改:为什么不将字段设为int并将默认值设为0

您不会显示有关如何构建表的任何代码,但您可以这样做:

$total = ((!$row['total'] ? 0 : $row['total']);

此代码基本上表示“如果$row['total']为空,则将其设为零。否则,使$total等于返回的内容。

答案 4 :(得分:0)

你的问题是COUNT(...)如果没有结果,则返回NULL而不是0,这可能是PHP在输出时将其视为空字符串。您可以通过向SQL添加COALESCE expression来解决这个问题(在我看来,这是更好的解决方案):

SELECT ... COALESCE(COUNT(`LookbookLogID`), 0) ...

或者在PHP中查看:

echo $row['total'] ? $row['total'] : 0;

或多行版本:

if($row['total'])
    echo $row['total'];
else
    echo 0;

请注意,您无需进行任何比较或调用empty(),因为PHP的类型转换为treats null, empty string and 0 as false