【问题标题】: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
}