在MYSQL中选择 - 选择所有记录

时间:2011-07-01 23:08:54

标签: php mysql select

我有如下功能:

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来检索所有记录。

谢谢...

4 个答案:

答案 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