【问题标题】:Multiple WHERE clause to SQL statementSQL 语句的多个 WHERE 子句
【发布时间】:2019-12-24 18:33:38
【问题描述】:

我尝试了不同的方法,但仍然无法正常工作。下面的代码有效,但我需要添加另一个 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);
    }
}

【问题讨论】:

  • 好的..你能帮我添加第二个 where 类...第二个列等于 $secondvariable
  • 您的代码似乎容易受到 SQL 注入攻击。

标签: php sql pdo where-clause


【解决方案1】:

您正在滥用准备好的语句,所有值都应作为占位符传递,并绑定在 execute 方法中。或者,bindparambindvalue 也可以使用,有关这些用法的示例,请参阅手册。

$stmt=$this->dbConn->prepare("SELECT * FROM Monify Where user_id= ?");
$stmt->execute(array($user_id));

要让WHERE 子句包含多个部分,您只需使用ORAND 运算符。例如,要检查用户 ID 和电话号码,您可以这样做:

$stmt=$this->dbConn->prepare("SELECT * FROM Monify Where user_id= ? AND phone=?");
$stmt->execute(array($user_id, $phone));

或者如果任一字段是可选的,

$stmt=$this->dbConn->prepare("SELECT * FROM Monify Where user_id= ? OR phone=?");
$stmt->execute(array($user_id, $phone));

所有这些数据都可以在MYSQL manual 中找到。

如果给定了 WHERE 子句,则表示选择行必须满足的一个或多个条件......在 WHERE 表达式中,您可以使用 MySQL 支持的任何函数和运算符,除了聚合(摘要)职能。请参阅Section 9.5, “Expressions”Chapter 12, Functions and Operators

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-11
    • 1970-01-01
    • 1970-01-01
    • 2020-03-26
    • 2011-08-07
    相关资源
    最近更新 更多