PDO 查询总是返回 1 或 true
PDO query is always returning 1 or true
我试图在删除某行之前检查它是否存在。我的 table 中的行不存在,但它总是 returns 1
:
$orders = $this->db->prepare("SELECT * FROM orders WHERE id=? AND user=?");
$check = $orders->execute(array($message,$this->model->checkapi($data,$message)));
echo $check;
if($check){
$deleteorder = $this->db->prepare("DELETE FROM orders WHERE id=? AND user=?");
$deleteorder->execute(array($message,$this->model->checkapi($data,$message)));
array_push($result, array('success' => true,
'deleted' => $message));
echo json_encode(array("result" => $result));
die();
}else{
$this->model->checkapi($data,$message)
returns 伪造用户名和 id/$message returns 136
我已经检查了我的数据库,ID 存在,但 id 和用户名不在一起。
我正在发送 ID:136 和用户名:fakeuser
在数据库中,该行以 id:136 和用户名存在:demo.
我不确定为什么当由于不匹配而不应选择该行时返回 1。
你应该在 execute()
之后使用 fetch()
,因为 execute()
只是 returns TRUE
成功或 FALSE
失败:
$orders->execute(...
$result = $orders->fetch(PDO::FETCH_ASSOC);
print_r($result);
当execute
succeeds, it returns TRUE
. In your case, the query succeeds, it just returns 0 rows, which is a completely valid result. If you want to check whether the query returned any rows, you could attempt to fetch
从结果:
$orders->execute(array($message,$this->model->checkapi($data,$message)));
$check = $orders->fetch();
if ($check) {
话虽如此,但我认为这整个方法都是错误的 - 删除单个行并不比查询该行要重得多,如果有的话。在最坏的情况下,如果它存在,您将执行两个语句而不是一个。我会继续发送删除语句,如果它不影响任何行(因为它们不存在),那就这样吧。
我试图在删除某行之前检查它是否存在。我的 table 中的行不存在,但它总是 returns 1
:
$orders = $this->db->prepare("SELECT * FROM orders WHERE id=? AND user=?");
$check = $orders->execute(array($message,$this->model->checkapi($data,$message)));
echo $check;
if($check){
$deleteorder = $this->db->prepare("DELETE FROM orders WHERE id=? AND user=?");
$deleteorder->execute(array($message,$this->model->checkapi($data,$message)));
array_push($result, array('success' => true,
'deleted' => $message));
echo json_encode(array("result" => $result));
die();
}else{
$this->model->checkapi($data,$message)
returns 伪造用户名和 id/$message returns 136
我已经检查了我的数据库,ID 存在,但 id 和用户名不在一起。
我正在发送 ID:136 和用户名:fakeuser
在数据库中,该行以 id:136 和用户名存在:demo.
我不确定为什么当由于不匹配而不应选择该行时返回 1。
你应该在 execute()
之后使用 fetch()
,因为 execute()
只是 returns TRUE
成功或 FALSE
失败:
$orders->execute(...
$result = $orders->fetch(PDO::FETCH_ASSOC);
print_r($result);
当execute
succeeds, it returns TRUE
. In your case, the query succeeds, it just returns 0 rows, which is a completely valid result. If you want to check whether the query returned any rows, you could attempt to fetch
从结果:
$orders->execute(array($message,$this->model->checkapi($data,$message)));
$check = $orders->fetch();
if ($check) {
话虽如此,但我认为这整个方法都是错误的 - 删除单个行并不比查询该行要重得多,如果有的话。在最坏的情况下,如果它存在,您将执行两个语句而不是一个。我会继续发送删除语句,如果它不影响任何行(因为它们不存在),那就这样吧。