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

我目前有以下 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);但这只是显示真或假,并显示与我想要的相反的响应。


德玛西亚99
浏览 119回答 3
3回答

开满天机

您不需要选择并获取所有行来执行此操作。您可以让您的查询计算符合条件的行数。$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

虽然您可以将数组转换为布尔值,但我更喜欢更明确一点。在这种情况下,我会使用该empty()功能。对于您想要的格式,您还需要为输出创建一个关联数组:echo json_encode( array( 'error' => empty($row) ) );

弑天下

这样做怎么办:echo json_encode(['error' => ! ( (bool) $row )] );
打开App,查看更多内容
随时随地看视频慕课网APP