【问题标题】:How to cancel a select statement when a WHERE parameter is empty or does not exist? [duplicate]当 WHERE 参数为空或不存在时,如何取消 select 语句? [复制]
【发布时间】:2019-05-28 16:14:43
【问题描述】:

我希望有人可以帮助我吗?这是我基于会话变量的 select 语句。

$users = 'SELECT * FROM wbcusers WHERE username = "'.$_SESSION['user'].'" ';

如果会话变量“用户”存在,我希望能够选择...如果不存在,我不想选择任何内容并取消数据库查询,因此我看不到“通知:未定义索引:错误” ' 通知?

非常感谢任何有关如何完成此操作的帮助。

谢谢。 史蒂夫

【问题讨论】:

    标签: php database if-statement session


    【解决方案1】:

    最初将您的用户数组设置为一个空数组,然后当且仅当您需要的会话变​​量已设置时才用数据填充它。

    $users = [];
    
    if (isset($_SESSION['user'])) {
      $sql = "SELECT * FROM wbcusers WHERE username = ?";
      $stmt = $pdo->prepare($sql);
      $stmt->execute([$_SESSION['user']]);
      $users = $stmt->fetchAll(PDO::FETCH_ASSOC);
    }
    

    P.S.:请使用上面的查询参数,而不是丑陋的字符串 concat 废话。编写代码更容易,而且您不必担心 SQL 注入漏洞。

    【讨论】:

      【解决方案2】:
      if (isset($_SESSION['user'])) {
          $users = 'SELECT * FROM wbcusers WHERE username = "'.$_SESSION['user'].'" ';
          ....
      }
      else
      {
         //something else
      }
      

      【讨论】:

        猜你喜欢
        • 2017-11-03
        • 2013-07-12
        • 1970-01-01
        • 2019-04-27
        • 1970-01-01
        • 2018-05-02
        • 1970-01-01
        • 2017-10-19
        • 2013-03-23
        相关资源
        最近更新 更多