仅当具有特定值的现有记录尚不存在时,才使用以下查询添加/插入记录:
PHP:
$query = "INSERT INTO accounts_mm (abc, name)
SELECT '".$mysqli->real_escape_string($abc)."', '".$mysqli->real_escape_string($name)."' FROM DUAL
WHERE NOT EXISTS (
SELECT abc FROM accounts_mm WHERE abc = '".$mysqli->real_escape_string($abc)."'
)";
......它有效......但是在没有插入记录的情况下,我总是得到'成功'。
if($mysqli->query($query)){
echo json_encode(array('added' => 'Success!'));
} else {
echo json_encode(array('added' => 'Failure!'));
}
如何检查上述查询的成功与否?
进一步尝试:
if(mysqli_affected_rows($mysqli->query($query)) > 0){
echo json_encode(array('added' => 'Success!'));
} else {
echo json_encode(array('added' => 'Failure!'));
}
答案 0 :(得分:3)
查询可能会成功(但不会失败)但不会因WHERE NOT EXISTS
而插入。就像SELECT abc FROM accounts_mm WHERE abc = 1
不会生成错误但如果没有abc = 1
则可能无法返回结果。所以你需要检查affected_rows
:
使用您使用过的对象:
$mysqli->query($query);
if($mysqli->affected_rows() > 0){
echo json_encode(array('added' => 'Success!'));
} else {
echo json_encode(array('added' => 'Failure!'));
}
或者我猜你可以把它们结合起来:
if($mysqli->query($query) && ($mysqli->affected_rows() > 0)){
echo json_encode(array('added' => 'Success!'));
} else {
echo json_encode(array('added' => 'Failure!'));
}
请注意,如果$mysqli->query($query);
返回false
,则查询由于错误而无法执行,但是如果它返回true
则执行了查询但是可能没有结果。