我有一个像这样的查询:
$stmt = $db->query('
SELECT e.id
FROM `entity` e
WHERE e.deleted = 0 AND e.published = 1 AND e.date <= CURDATE() ' .
( !empty($_SESSION['filter']) ? ' AND e.category = :category' : '' )
);
if (!empty($_SESSION['filter'])) {
$stmt->bindValue('category', $_SESSION['filter'], PDO::PARAM_INT);
}
$entities = $stmt->fetchAll(PDO::FETCH_ASSOC);
我在类别中有一些条目1
并$_SESSION['filter']
已设置:
string(1) "1"
但它不会加载任何条目,我也不会收到任何错误。
我也尝试过:
- 重命名
category
为其他名称,例如myvalue
- 设置一个新变量:
$x = 1; $stmt->bindValue('category', $x, PDO::PARAM_INT);
- 直接编辑查询:
' AND e.category = 1'
或' AND e.category = $_SESSION['filter']'
在所有可能性中,只有最后一个有效。这也是我实际上不想使用的那个。我怎样才能解决这个问题?