2011-07-01 217 views
0

我有一个函数象下面这样:在MYSQL选择 - 选择所有记录

public function select($id=null) { 
    $query = "select * from press_releases where id = {$id}"; 

    $results = $this->db->query($query); 

    return $results; 
} 

如果函数调用过程中未指定$id,我想回到所有的记录,但我认为NULL默认值不这是一个很好的选择。我应该做什么而不是NULL来检索除使用未指定where部分中的id字段的另一个查询之外的所有记录。

谢谢...

+0

总有一些谁认为他们是聪明和downvote他人的问题的人...... – Tarik

+1

我没有downvote你,但你要明白不是soemone不downvote,因为他认为自己是聪明。我想每个来到这个网站的人,无论是问还是回答,都认为他很聪明。 Downvote意味着他认为问题不明确,或者它不可用,或者OP在发布之前搜索了一下或尝试了一些东西并不明显。 –

回答

8
$query = "select * from press_releases"; 
if (!empty($id)) 
{ 
    $query .= "where id = {$id}"; 
} 

如果$id是一个整数,我会用:

$id = (int) $id; 
if ($id > 0) 
... 

无论哪种方式,我会确保$id可以放心使用。

+0

我喜欢这个答案,虽然与我实现的类似。 – Tarik

2

这可能工作:

$query = "select * from press_releases where id = {$id} OR {$id} IS NULL"; 
-1

你可以更换其中运营商等,如在

$query = "select * from press_releases where id LIKE '{$id}'"; 

和默认值更改为“%”,但我不喜欢这个解决方案出于效率原因

只有在绝对需要保留查询时,您才应该这样做。否则,只有在给出$id参数的情况下,才能更改查询以追加where条件。那将是正确的解决方案。

+0

这会产生意外的额外记录。 – Randy

+0

你是对的,我从头开始编写它,因为它要求不改变查询。我要用正确的答案更新我的答案。 – Fabio

-1

SELECT DISTINCT ID从press_releases