我在变量
中有这个数组$regions = |north|south|west|
和包含单个值的数据库字段“Region”,例如北
我需要一个select语句,它将选择“Region”的值不是数组中列出的任何值的所有字段。例如北,南,西。
答案 0 :(得分:3)
您可以使用WHERE field NOT IN('value1', 'value2', ...)
在SQL中执行此操作。 Basic string functions可能足以以这种格式获取数组。
答案 1 :(得分:1)
$regions = "north|west|south";
$regionsArray = explode('|', $regions);
for ($i = 0; $i < count($regionsArray); $i++) {
$regionsArray[$i] = "'" . $regionsArray[$i] . "'";
}
$query = "SELECT *
FROM ...
WHERE Region NOT IN (" . implode(",", $regionsArray) . ")";
这假设您的$regions
变量是一个类似于描述的字符串,而不是数组。
如果它之前是一个数组,那么很可能不需要将它转换为字符串(上面的代码将其转换回数组)。
答案 2 :(得分:0)
也许你忘记了mysql_real_escape_string()?
function db_escape($value)
{
return '"'.mysql_real_escape_string($value).'"';
}
$regions = array('north','west','south');
$query = "SELECT *
FROM `table`
WHERE `Region` NOT IN (" . implode(",", array_map('db_escape',$regions)) . ")";