我有如下功能:
public function select($id=null) {
$query = "select * from press_releases where id = {$id}";
$results = $this->db->query($query);
return $results;
}
如果在函数调用期间没有指定$id
,我想返回所有记录,但我认为NULL
默认值不是一个好的选择。除了使用另一个未在where部分中指定id字段的查询之外,我应该怎样做而不是NULL
来检索所有记录。
谢谢...
答案 0 :(得分:8)
$query = "select * from press_releases";
if (!empty($id))
{
$query .= "where id = {$id}";
}
如果$id
是整数,我会使用:
$id = (int) $id;
if ($id > 0)
...
无论哪种方式,我都会确保使用$id
安全。
答案 1 :(得分:2)
这可能有效:
$query = "select * from press_releases where id = {$id} OR {$id} IS NULL";
答案 2 :(得分:-1)
您可以将where运算符替换为LIKE,如
$query = "select * from press_releases where id LIKE '{$id}'";
并将默认值更改为'%',但出于效率原因,我不喜欢此解决方案。
只有在您完全需要保留查询时才应该这样做。否则,只有在给出$id
参数的情况下,才更改查询以附加where条件。那将是正确的解决方案。
答案 3 :(得分:-1)
SELECT DISTINCT id FROM press_releases