使用PHP和MySQL。我有一個數組P,它包含可能的產品類別數量的值。在我的表中,它也有存儲類別號碼和其他字段的「類別」字段。我想要的是在所有行中選擇數據,其中字段「category」在數組P中有任何值。我應該怎麼做?我怎樣才能選擇數據哪一個字段是數組的成員?
例如
P = [1,7,13]
SELECT * FROM table WHERE category=P[1] OR categry=P[2] OR category=P[3]....
使用PHP和MySQL。我有一個數組P,它包含可能的產品類別數量的值。在我的表中,它也有存儲類別號碼和其他字段的「類別」字段。我想要的是在所有行中選擇數據,其中字段「category」在數組P中有任何值。我應該怎麼做?我怎樣才能選擇數據哪一個字段是數組的成員?
例如
P = [1,7,13]
SELECT * FROM table WHERE category=P[1] OR categry=P[2] OR category=P[3]....
$sql = "SELECT * FROM table WHERE category IN (".implode(",", $P).")"
謝謝X.L.Ant,你的回答非常緊湊,適合用在我的代碼中。 –
用途:
$categories = implode(', ', $p); // Where $p is the array
SELECT * FROM table WHERE category IN ($categories)
你應該使用IN
關鍵字:
SELECT * FROM table WHERE category IN (p[1], p[2], p[3])
與implode
:
$categories = implode(',', $P);
使用字符串連接:
$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]}....";
因爲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);
與具有3個值將是P中的上述代碼的結果是:
SELECT * FROM table WHERE category= '1' OR category= '2' OR category= '3' OR category= '4' OR category= '5'
這將自動地使P
陣列由值的數目基於該查詢。
是「P」列名嗎?如果是這樣,你是否意識到數組不是'MySQL'中的數據類型。你實際上在那一欄中存儲了什麼?一個號碼?一個字符串? – MichaelRushton
@MicaelRushton P不是列名。我在字段「類別」中存儲號碼。 –