我的功能就是这个
function all_products($where, $condition, $where2, $condition2) {
$query = "SELECT *
FROM `product`
WHERE
".mysql_real_escape_string($where)." = '".mysql_real_escape_string($condition)."'
and
".mysql_real_escape_string($where)." = '".mysql_real_escape_string($condition)."'
";
$query_run = mysql_query($query);
return $query_run;
}
因此,每当我尝试使用此函数从db获取数据时,即使只有$ where和$ condition为true且$ where2和$ condition2为false,它也会返回行。
答案 0 :(得分:0)
您可以支持可变长度的条件。
function all_products(array $assoc) {
foreach ($assoc as $key => $value) {
$pairs[] = sprintf(
"`%s` = '%s'",
addcslashes($key, '`'),
mysql_real_escape_string($value)
);
}
$sql = empty($pairs) ?
'SELECT NULL LIMIT 0' :
'SELECT * FROM `product` WHERE ' . implode(' AND ', $pairs);
return mysql_query($sql);
}
但是,所有mysql_*
个功能都已 DEPRECATED 。我强烈建议您迁移到PDO
或mysqli
。