组织 WHERE子句的小技巧(OR)
有时需要传入多个condition(至少一个),
可以这样子来写
$where = “”;
foreach($allCondition AS $condition){
if($where != “”){
$where .= ” OR “;
}
$where = “`conditionX`=” . addslashes($condition);
}
这样最后生成的 WHERE 子句就是”XXX OR XXX OR …”而当只有一个条件时为”XXX”
6 Responses to “组织 WHERE子句的小技巧(OR)”
Comment from Symphony
Time 2008/03/27 at 2:28 pm
如果直接 implode($allCondition, ‘ OR ‘);
结果:$condition OR $condition OR $condition …
用我的办法的结果:“`conditionX`=” . addslashes($condition) . ‘ OR ‘ . “`conditionX`=” . addslashes($condition) . ‘ OR ‘ . “`conditionX`=” . addslashes($condition) …
Comment from Unknown
Time 2008/03/30 at 3:03 pm
array_walk($allCondition, ‘sql_escape’);
$where = “`conditionX` IN (‘” . implode($allCondition, “‘, ‘”) . “‘)”;
function sql_escape_filter(&$string)
{
$string = mysql_real_escape_string($string);
}
Comment from Symphony
Time 2008/03/30 at 3:45 pm
很好,很强大
array_walk($allCondition, ’sql_escape’);
$where = “`conditionX` IN (’” . implode($allCondition, “‘, ‘”) . “‘)”;
function sql_escape_filter(&$string)
{
$string = mysql_real_escape_string($string);
}
foreach( $allCondition AS $condition )
{
$condition = mysql_real_escape_string($condition ); // mysql_escape_string() 不转换"_"和"%"
}
$where = “`conditionX` IN (’” . implode($allCondition, “‘, ‘”) . “‘)”;
Comment from Unknown
Time 2008/03/31 at 1:18 am
Should be:
array_walk($allCondition, ’sql_escape_filter’);
foreach ($allCondition as & $condition) {
…
}
Comment from Unknown
Time 2008/03/27 at 2:12 pm
implode($allCondition, ‘ OR ‘);