为了账号安全,请及时绑定邮箱和手机立即绑定

在 PDO 中创建 bool JSON 响应的问题 | PHP

在 PDO 中创建 bool JSON 响应的问题 | PHP

PHP
德玛西亚99 2022-06-17 10:59:24
我目前有以下 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


查看完整回答
反对 回复 2022-06-17
?
慕斯709654

TA贡献1840条经验 获得超5个赞

虽然您可以将数组转换为布尔值,但我更喜欢更明确一点。在这种情况下,我会使用该empty()功能。

对于您想要的格式,您还需要为输出创建一个关联数组:

echo json_encode( array( 'error' => empty($row) ) );


查看完整回答
反对 回复 2022-06-17
?
弑天下

TA贡献1818条经验 获得超8个赞

这样做怎么办:

echo json_encode(['error' => ! ( (bool) $row )] );


查看完整回答
反对 回复 2022-06-17
  • 3 回答
  • 0 关注
  • 118 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号