我尝试了其他方法,但仍然无法正常工作。下面的代码有效,但是我需要添加另一个where子句。如何在我的SQL查询中添加更多WHERE子句?
public function getuserAcct(){
$user_id = $this->param['user_id'];
$meter = $this->param['meter'];
$phone = $this->param['phone'];
$stmt=$this->dbConn->prepare("SELECT * FROM Monify Where user_id=".$user_id);
$stmt->execute();
$response=$stmt->fetch(PDO::FETCH_ASSOC);
if($response || $response == 0)
{
$this->returnResponse(SUCCESS_RESPONSE,$response);
}
else
{
$this->returnResponse(ERROR,$response);
}
}
您正在滥用准备好的语句,所有值都应作为占位符传递并在execute
方法中进行绑定。或者,可以使用bindparam
或bindparam
,有关这些用法的示例,请参考手册。
bindvalue
要在bindvalue
子句中包含多个部分,您只需要使用$stmt=$this->dbConn->prepare("SELECT * FROM Monify Where user_id= ?");
$stmt->execute(array($user_id));
或WHERE
运算符即可。例如,要检查用户名和电话号码,可以执行以下操作:
OR
或如果任一字段为可选,
AND
[所有这些数据在$stmt=$this->dbConn->prepare("SELECT * FROM Monify Where user_id= ? AND phone=?");
$stmt->execute(array($user_id, $phone));
中可用。
WHERE子句,如果给出,则表明必须满足行才能被选择的条件。...在WHERE表达式中,您可以使用MySQL支持的任何函数和运算符,但聚合(摘要)函数除外。参见
$stmt=$this->dbConn->prepare("SELECT * FROM Monify Where user_id= ? OR phone=?"); $stmt->execute(array($user_id, $phone));
和MYSQL manual。