我有这样的阵列中的可变选择所有字段,其中字段值不是在阵列
和数据库字段“区域”,它包含一个单一的值例如北
我需要一个select语句来选择“Region”的值不是数组中列出的任何值的所有字段。例如北,南,西。
我有这样的阵列中的可变选择所有字段,其中字段值不是在阵列
和数据库字段“区域”,它包含一个单一的值例如北
我需要一个select语句来选择“Region”的值不是数组中列出的任何值的所有字段。例如北,南,西。
你可以在SQL中使用WHERE field NOT IN('value1', 'value2', ...)
来做到这一点。 Basic string functions可能足以让你的数组以这种格式。
值在一个数组中,它们将根据用户选择而改变 – sah 2012-03-01 20:21:45
$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
变量是等中记载的字符串,而不是阵列。
如果是在此之前的数组,则很可能不需要将其转换为字符串(上面的代码将其转换回数组)。
也许你忘了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)) . ")";
你有什么试过的? '$ regions'从哪里来?因为这不是一个数组。 – 2012-03-01 20:11:42
http://stackoverflow.com/questions/1519272/mysql-not-in-query – smp7d 2012-03-01 20:13:01
我在窗体中有多个复选框。如果用户选择了南北和西部,我需要在Rocket的区域字段 – sah 2012-03-01 20:27:14