2013-05-01 29 views
3

選擇多個行這是我的表結構從一個表

ID名稱值
1問題50
2持續時間120

現在,我要根據要顯示的名稱的值。 我無法正確執行sql語句。 這是我做了什麼:

$qry = "SELECT * FROM (
SELECT (SELECT value FROM pq_examsettings) as duration, 
     (SELECT value FROM pq_examsettings) as questions 
) "; 
$result= mysql_query($qry); 
$row = mysql_fetch_array($result); 
$duration = $row['duration']; 
$questions = $row['questions']; 

有人幫助我我該怎麼辦我的查詢,使得我的$時間和$問題變量顯示120和50

+0

如果這是一個新的項目,看看使用mysqli擴展而非mysql的。 – 2013-05-01 16:01:12

+0

謝謝@ Pier-LucGendreau。我注意到他們正在使用mysql_函數。我將轉換爲mysqli擴展。 – mutiemule 2013-05-03 12:33:09

回答

4

試試這個,

SELECT MAX(CASE WHEN name = 'questions' THEN value END) questions, 
     MAX(CASE WHEN name = 'duration' THEN value END) duration 
FROM pq_examsettings 
+0

這很好。非常感謝。救了我。 – mutiemule 2013-05-01 16:05:49

+0

不客氣':)' – 2013-05-01 16:06:35

0

使用的mysqli或PDO功能mysql_ *函數正式棄用:

$mysqli = new mysqli($dbserver, $dbmanager, $dbpass, $dbname); 
if($mysqli->connect_errno) { 
    echo "Error connecting to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error; 
} 

$query = $mysqli->query("SELECT * FROM pq_examsettings"); 
if($query->num_rows){ 
$new_row = array(); 
while($row = $query->fetch_assoc()){ 
    foreach($row as $key => $value){ 
     if($key == 'name'){ 
      $array_key = $value; 
     } 
     if($key == 'value'){ 
      $new_row[$array_key] = $value; 
     } 
    } 
} 
$duration = $new_row['duration']; 
$questions = $new_row['questions']; 
} 
+0

'SELECT *'查詢在這裏沒有幫助 - 問題是如何將兩個值都作爲兩列在一行中。您的查詢將以兩行形式提供結果。 – 2013-05-01 16:01:40

+0

哇你可以做一個'foreach'聲明 – Memolition 2013-05-01 16:04:49

+0

這不行,請從JW查看下面的答案。 – mutiemule 2013-05-01 16:06:32

0

我對MySQL不熟悉,不知道將行轉換爲列並將結果以一個選擇返回的簡單方法 - 看起來像JW給出了一個答案。

另一種選擇是隻進行兩次數據庫調用:

$qry = "SELECT value FROM PQ_EXAMSETTINGS WHERE NAME = 'duration'"; 
$result= mysql_query($qry); 
$row = mysql_fetch_array($result); 
$duration = $row['value']; 

$qry = "SELECT value FROM PQ_EXAMSETTINGS WHERE NAME = 'questions'"; 
$result= mysql_query($qry); 
$row = mysql_fetch_array($result); 
$questions = $row['value']; 
+1

這也行得通,但我認爲最好的方式,這是JW的做法。 – mutiemule 2013-05-01 16:15:52