我正在尝试查看一个数组是否为空,因此在<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)时,即使Not Available
的文本也不会在<td>
中显示
直接从PDO::rowCount
:上的文档中获取
PDOStatement::rowCount()返回受相应PDOStatement对象执行的最后一条DELETE、INSERT或UPDATE语句影响的行数。
它不返回SELECT查询结果集的行数。话虽如此:您是SELECT
’ing a SUM
,所以结果集将始终存在(如果查询成功)。如果没有记录是SUM
’ed,那么值将是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
这一事实。如果还没有,请使用PDO::setAttribute
进行