在td元素内部回显时出错

时间:2015-11-27 16:07:37

标签: php html pdo

我正在尝试查看数组是否为空,所以在<td>我会写:不可用。
我有这个PHP / PDO代码:

$sql1= "SELECT SUM(total_pay) AS total_w FROM workers WHERE date_of_pay = :d1 AND projects_id = :id";
    $stmt1 = $conn->prepare($sql1);

    $stmt1->bindValue(":d1", $d);
    $stmt1->bindValue(":id", $id);
    $count1 = $stmt1->execute();
    $result1 = $stmt1->fetchAll();
    $num1 = $stmt1->rowCount();

这是我的HTML代码:

<?php if($num1==0):?>
<td align="center">Not Available</td>
<?php else: ?>
<td align="center">
<?php 
{
    foreach ($result1 as $res1)
    {
        echo $res1['total_w'];
    }
}
?>
<?php endif; ?>
</td>

当数组不为空时,我有一个值,它会正常显示在<td>但当num1为空($ num1 == 0)时,{{1}中没有显示任何内容甚至是<td>

的文字

1 个答案:

答案 0 :(得分:2)

直接来自the documentation on PDO::rowCount

  

PDOStatement :: rowCount()返回受相应PDOStatement对象执行的最后一个DELETE,INSERT或UPDATE语句影响的行数。

返回SELECT查询的结果集的rowcount。话虽如此:你是SELECT SUM,所以结果集将始终存在(如果查询成功)。如果没有SUM编辑的记录,则值将为NULL。你应该做的是:

$result = $stmt1->fetch(PDO::FETCH_ASSOC);//SUM is only 1 row anyway

if ($result['total_w'] === null) {
    //no records found, no sum to display
} else {
    echo $result['total_w'];//show result
}

检查total_w=== null(类型和值检查)确实依赖于您已将PDO::ATTR_ORACLE_NULLS设置为PDO::NULL_NATURAL的事实。如果还没有,use PDO::setAttribute to do so