我目前有以下 PDO 脚本,它只是从 mySQL 数据库中选择值并将它们以 JSON 格式显示为数组: $stmt = $pdo->prepare(' SELECT `part_record` FROM `Table1` WHERE `value_num` = 1 AND (`cust` = :cust) '); $stmt->execute([ 'cust' => $_POST['cust'] ]); $row = $stmt->fetchAll(PDO::FETCH_ASSOC); echo json_encode($row);我不想显示记录列表,而是简单地回复{"error": false}是否找到记录以及{"error": true}是否找不到记录。我没有这样做,而是echo json_encode($row);尝试使用 bool like:echo json_encode((bool) $row);但这只是显示真或假,并显示与我想要的相反的响应。
3 回答

开满天机
TA贡献1786条经验 获得超13个赞
您不需要选择并获取所有行来执行此操作。您可以让您的查询计算符合条件的行数。
$stmt = $pdo->prepare(
'SELECT COUNT(*)
FROM `Table1`
WHERE `value_num` = 1 AND (`cust` = :cust)'
);
$stmt->execute([
'cust' => $_POST['cust']
]);
这样,查询可以返回一个 integer* 值,而不是返回一个数组,除了检查它是否为空之外,你不会真正使用它。
echo json_encode(['error' => !$stmt->fetchColumn()]);
您仍然需要将整数结果转换为布尔值,但这样做应该比获取所有行更有效。
*从技术上讲,在您的 PHP 代码中,它将是一个包含整数的字符串,但它会以相同的方式转换为 bool

慕斯709654
TA贡献1840条经验 获得超5个赞
虽然您可以将数组转换为布尔值,但我更喜欢更明确一点。在这种情况下,我会使用该empty()
功能。
对于您想要的格式,您还需要为输出创建一个关联数组:
echo json_encode( array( 'error' => empty($row) ) );
- 3 回答
- 0 关注
- 118 浏览
添加回答
举报
0/150
提交
取消