当WHERE参数为空或不存在时,如何取消选择语句?

时间:2019-01-01 21:39:03

标签: php database if-statement session

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

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

如果会话变量'user'存在,我希望能够进行选择...如果不存在,我不想选择任何内容并取消数据库查询,因此看不到'Notice:Undefined index:error通知吗?

在此方面的任何帮助将不胜感激。

谢谢。 史蒂夫

2 个答案:

答案 0 :(得分: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注入漏洞。

答案 1 :(得分:-2)

if (isset($_SESSION['user'])) {
    $users = 'SELECT * FROM wbcusers WHERE username = "'.$_SESSION['user'].'" ';
    ....
}
else
{
   //something else
}