2012-06-01 26 views
0

我一直想弄清楚如何將這些查詢減少到最小。我想也許寫作一個單一的查詢將獲取所有的數據。最小化在同一個表上的查詢Mysql


$db_u = mysql_fetch_array(mysql_query("SELECT * FROM u_settings WHERE setting='username'")); 
$db_p = mysql_fetch_array(mysql_query("SELECT * FROM u_settings WHERE setting='password'")); 
$db_e = mysql_fetch_array(mysql_query("SELECT * FROM u_settings WHERE setting='email'")); 
$db_t = mysql_fetch_array(mysql_query("SELECT * FROM u_settings WHERE setting='tag'")); 
$db_a = mysql_fetch_array(mysql_query("SELECT * FROM u_settings WHERE setting='active'")); 
$db_v = mysql_fetch_array(mysql_query("SELECT * FROM u_settings WHERE setting='version'")); 
$db_ti = mysql_fetch_array(mysql_query("SELECT * FROM u_settings WHERE setting='time'")); 
$db_wa = mysql_fetch_array(mysql_query("SELECT * FROM u_settings WHERE setting='warn'")); 
$data_dis = mysql_fetch_array(mysql_query("SELECT * FROM u_settings WHERE setting='dis'")); 

上面做的是那種陷入泥淖的公羊。任何幫助讚賞。

查看其他問題無法符合法案。

+0

你的bot_settings表是什麼樣的? – Jrod

+0

本質上,我只是想從行中設置列參數/ vaues我指定相應的信息。沒有其他專欄。 –

回答

3

嘗試IN代替許多查詢

SELECT * FROM u_settings WHERE setting IN ('username', 'password','email','tag','active','version','time','warn','dis'); 
+0

那麼要訪問數組將會是什麼?假設我把它全部放在一個變量中。[code]'$ db_selected = SELECT * FROM u_settings WHERE設置IN('username','password','email','tag','active','version','time ','warn','dis');'我將如何訪問數組中的單個變量? '$ db_selected ['username']'? –

+0

你正在談論哪個數組? –

+0

我會將查詢的結果存儲在數組中,我不會。能夠將它們分配給其他變量或回顯它們。 –

2

是,寫出沒有WHERE子句一個SELECT查詢。這將從表中獲取所有信息。

0

如果你想保留每個變量,你可以創建一個數組,並以這種方式進行。

$keys = array(
'db_u' => 'username', 
'db_p' => 'password', 
'db_t' => 'tag' 
); 

foreach($keys as $key => $value) { 
    &$keys[$key] = mysql_fetch_array(mysql_query("SELECT * FROM u_settings WHERE setting='{$value}'")); 
} 

我沒有檢查代碼,但我認爲你明白了。它將每個結果存儲在一個數組中。

有可能是一個更簡單的方法來做到這一點。