今天我会根据SQL语句问一个简单的问题(可能几乎是愚蠢的问题)。具有可变条件的SQL
我正在处理SELECT查询,我有一些条件,但并不总是全部。我会用一个例子来解释。
想象一下,一个简单的表的人[ID,姓名,姓]
我希望得到一个人的ID ......我会一直问名字,但并不总是要求为姓,所以查询将取决于PHP函数的参数...查询可能是:
SELECT id FROM Person where name = $name; (if parameter surname = null)
或 SELECT id FROM Person where name = $name and surname = $surname;
(如果参数姓定义)
我有两个更多钞票码得到它,但我认为它没有优化
选项1:
if ($surname) {
SELECT id FROM Person where name = $name and surname = $surname;
else{
SELECT id FROM Person where name = $name;
}
选项2:
$sql = "SELECT id FROM Person where name = $name";
if ($surname) { $sql = $sql + " and surname = $surname"; }
我认为最好的办法是在第二个选项,而参数可能会增加,但我不知道是否它可能是一个灵活的参数,在查询中引入依赖于一个空参数。
对不起,我的英语。
非常感谢。
'... name = $ name and($ surname IS NULL or surname = $ surname)'。 – jarlh
最好的解决方案是使用准备好的语句和@jarlh – Jens