【发布时间】:2015-06-14 16:29:24
【问题描述】:
我是 mysqli prepare 语句的新手,很惊讶地发现 ||在 mysqli 准备语句查询中没有按预期工作。
我有一个检查用户是否注册的功能,它的评估应该基于唯一的行ID和电子邮件地址。此外,由于id列和电子邮件列的类型不同,它们是Int(11)和VARCHAR分别,所以我认为使用bind_param 会有一些麻烦,因为不同的数据类型
public function checkUserRegistered($iden){
//The iden can be either a id or a email address
$stmt = $this->connection->prepare("SELECT `id` FROM `$this->table_name` WHERE (`email`= ? || `id`= ?) LIMIT 1 ");
$stmt->bind_param('s',$iden); // s or i ?
if($stmt->execute()){
$result = $stmt->get_result();
if($result->num_rows ==1){
$stmt->close();
return true;
}else{
return false;
}
}
}
这样做的正确方法是什么,我必须使用单独的函数吗?
【问题讨论】:
-
||是许多 SQL 方言中的 concat 运算符,而不是OR别名。 -
@mario 是的,我确实尝试过
OR,但它仍然没有返回来自get_result()的行 -
今天在 php mysql 房间里对错误检查
echo $mysqli->error;的热爱在哪里!忘了,今天每天都一样
标签: php mysql mysqli prepared-statement