组织 WHERE子句的小技巧(OR)

By Symphony - Last updated: Friday, January 4, 2008 - Save & Share - 6 Comments

有时需要传入多个condition(至少一个),
可以这样子来写

$where = “”;
foreach($allCondition AS $condition){
if($where != “”){
$where .= ” OR “;
}
$where = “`conditionX`=” . addslashes($condition);
}

这样最后生成的 WHERE 子句就是”XXX OR XXX OR …”而当只有一个条件时为”XXX”

Posted in Uncategorized • Tags: Top Of Page

6 Responses to “组织 WHERE子句的小技巧(OR)”

Comment from Unknown
Time 2008/03/27 at 2:12 pm

implode($allCondition, ‘ 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 Symphony
Time 2008/04/01 at 1:07 pm

是的,没错

Write a comment