2013-06-24 117 views
0

我有記錄在我的數據庫中,但我無法顯示它們。請有人檢查我的密碼。我只是一個業餘的Web開發人員。謝謝你的幫助。爲什麼我不能在php mysql中顯示我的記錄?

<?php 
$groups=mysql_query("SELECT * FROM groups ORDER BY id ASC"); 
$g_res=mysql_affected_rows(); 
if($g_res>0) 
{ 
while($row=mysql_fetch_array($groups)) 
{ 
    $g_id=$row['id']; 
    $g_name=$row['g_name']; 

    $members=mysql_query("SELECT * FROM members WHERE group='$g_id'"); 
    $m_res=mysql_affected_rows(); 
    if($m_res>0) 
    { 
     while($row2=mysql_fetch_array($members)) 
     { 
      $m_id=$row2['id']; 
      $m_name=$row2['m_name']; 
      $m_email=$row2['m_email']; 
      echo "<tr><td>$m_name<br/>($g_name)</td><td>$m_email</td></tr>"; 
     } 
    } 
    else 
    { 
    echo "<tr><td colspan=2>Nothing to display</td></tr>"; 
    } 
} 
} 
else 
{ 
echo "<tr><td colspan=2>Error</td></tr>"; 
} 
?> 

有了這個代碼,我得到的結果elseError。如果我從查詢中刪除WHERE group='$g_id',我的所有記錄都會隨機顯示,但我想按組顯示我的記錄(成員)。

+0

** **警告你的代碼也許容易受到SQL注入式攻擊。 –

+0

請不要使用已棄用的'mysql_ *'函數。 – Voitcus

+0

使用'mysql_error()'從SQL查詢中獲取錯誤;以某種方式將它添加到您的其他語句中,以便您還可以看到錯誤 –

回答

3

你需要逃避reserved words in MySQLgroup與反引號

SELECT * FROM members WHERE `group` = '$g_id' 
          ^-----^-------------here 

你也可以當你加入你的數據是這樣

select g.id as gid, g.g_name, m.id as mid, m.m_name, m.m_email 
from groups g 
inner join members m on g.id = m.group 
order by g.id asc 

這是更容易,並會增加,因爲你的表現不遺餘力內環不需要執行很多查詢,只需要一個。

也請don't use mysql_* functions in new code。 他們不再維護,並且是officially deprecated。 瞭解更多關於準備陳述,並使用PDOMySQLi。請參閱this article以便快速瞭解如何做到這一點以及爲什麼這麼重要。

+0

我不知道,「組'是MySQL中的保留字。感謝你的指出。這解決了我的問題。 – user1957878

0

嘗試像

$members=mysql_query("SELECT * FROM members WHERE `group` = '".$g_id."'); 

或者乾脆

$members=mysql_query("SELECT * FROM members WHERE `group` = '$g_id'"); 
+0

不要忘記你的第二個例子中的插值在$ g_id –

+0

附近因爲它是一個整數值,所以我不需要爲這個插入字符 – Gautam3164

+0

雖然在不是整數的情況下也不會傷害,但id通常是整數但在他的代碼中似乎沒有任何東西強制它成爲 –

0

你必須來連接你的變量。 試試這個:

$members=mysql_query("SELECT * FROM members WHERE `group`='".$g_id."'"); 

而且

echo "<tr><td>".$m_name."<br/>(".$g_name.")</td><td>".$m_email."</td></tr>";

相關問題