0

使用 PHP 和 MySQL。我有一个数组 P,其中包含可能的产品类别数的值。在我的表格中,它还有“类别”字段,其中存储了类别编号和其他字段。我想要的是在所有行中选择数据,其中字段“类别”在数组 P 中有任何值。我该怎么办?

例如
P=[1,7,13]

SELECT * FROM table WHERE category=P[1] OR categry=P[2] OR category=P[3]....
4

5 回答 5

2

采用:

$categories = implode(', ', $p); // Where $p is the array 
SELECT * FROM table WHERE category IN ($categories)
于 2013-01-03T14:01:04.520 回答
1

尝试implode() 函数

$sql = "SELECT * FROM table WHERE category IN (".implode(",", $P).")"
于 2013-01-03T14:00:47.693 回答
0

你应该使用IN关键字:

SELECT * FROM table WHERE category IN (p[1], p[2], p[3])

implode

$categories = implode(',', $P);
于 2013-01-03T14:01:15.680 回答
0

使用字符串连接:

$P = array(1, 7, 13);
$query = "SELECT * FROM table WHERE category=".$P[1]." OR 
            category=".$P[2]." OR category=".P[3]."....";

或者

$query = "SELECT * FROM table WHERE category={$P[1]} OR 
            category={$P[2]} OR category={P[3]}....";
于 2013-01-03T14:01:56.540 回答
0

由于 P 数组中的值可能多于/少于 3 个,因此最好先进行查询:

$p = array('1', '2', '3', '4', '5');

$auto = '';
foreach($p as $value){
    $auto .= "'".$value."'" . " OR category= ";
}
$auto = substr($auto, 0 , strlen($auto) - 14);

$the_query = "SELECT * FROM table WHERE category= $auto";

echo $the_query;
// mysql_query($the_query);

上面代码中 P 有 3 个值的结果将是:

SELECT * FROM table WHERE category= '1' OR category= '2' OR category= '3' OR category= '4' OR category= '5'

P这将自动根据数组中的值数量进行查询。

于 2013-01-03T14:14:59.360 回答