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

在PDO | PHP中创建boolJSON响应的问题,php,pdo,Php,Pdo,我目前有以下PDO脚本,它只需从mySQL数据库中选择值并以JSON格式显示为数组: $stmt = $pdo->prepare(' SELECT `part_record` FROM `Table1` WHERE `value_num` = 1 AND (`cust` = :cust) '); $stmt->execute([ 'cust' => $_POST['cust'] ]); $row =

我目前有以下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的:
echo json_encode((bool)$row)但这只是显示true或false,并显示与我想要的相反的响应。

这样做怎么样:

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

虽然可以将数组强制转换为布尔值,但我更喜欢显式一点。在这种情况下,我将使用
empty()
函数

对于所需的格式,还需要为输出创建关联数组:


echo json_encode(数组('error'=>空($row))

执行此操作不需要选择并获取所有行。您可以让查询计算与条件匹配的行数

$stmt = $pdo->prepare(
    'SELECT COUNT(*)
    FROM `Table1`
    WHERE `value_num` = 1 AND (`cust` = :cust)'
);
$stmt->execute([
    'cust' => $_POST['cust']
]);
这样,查询就可以返回一个整型*值,而不是返回一个数组,该数组除了检查它是否为空之外,不打算用于任何其他用途

echo json_encode(['error' => !$stmt->fetchColumn()]);
您仍然需要将整数结果转换为bool,但是这样做应该比获取所有行更有效


*从技术上讲,在PHP代码中,它将是一个包含整数的字符串,但它将以相同的方式强制转换为bool

不要fetchAll而是fetch。如果大于0,则检查找到多少行,否则为false