在PDO | PHP中创建boolJSON响应的问题
我目前有以下PDO脚本,它只需从mySQL数据库中选择值并以JSON格式显示为数组:在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 =
$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