2009-10-26 93 views
1

我無法獲得以下代碼以顯示parent_id等於id的數據庫中的項目。MySQL和PHP顯示問題?

這裏是下面的代碼。

// Query member data from the database and ready it for display 
$mysqli = new mysqli("localhost", "root", "", "sitename"); 
$dbc = mysqli_query($mysqli,"SELECT * FROM categories WHERE id=parent_id"); 

if (!$dbc) { 
// There was an error...do something about it here... 
print mysqli_error(); 
} 

while ($row = mysqli_fetch_assoc($dbc)) { 
echo '<li><a href="' , $row['url'] , '" title="' , $row['description'] , '">' , $row['category_name'] , '</a>'; 
    } 

我想我知道我在做什麼錯我該如何讓這個查詢檢查以前的查詢?

+0

您能爲我們提供更多信息嗎?就像什麼不可行。你也可以在while循環中省略if語句,因爲你只選擇parent_id等於id的行。 – svens 2009-10-26 17:55:12

+0

類別是否有一個名爲「parent_id」的列?或者是parent_id意味着提供給查詢的參數? – Mikeb 2009-10-26 17:56:16

+0

類別有一個parent_id字段 – stack 2009-10-26 17:58:33

回答

0

我覺得這條線應該重新思考:

if ($row['parent_id'] == $row['id']) { 

原因是U確保其正確的邏輯是什麼?

+0

呀 - 你只顯示行,其中母公司= ID – 2009-10-26 17:54:22

+0

@adam ..這其中有我抓我的頭真的..我的意思是我不真正瞭解那裏的仔細檢查,並在第一時間查詢的邏輯。 – 2009-10-26 17:59:50

1

我把SQL查詢的變種,所以你可以輸出它,那就試試這個直接在數據庫中,看看是否有任何匹配的行:

$mysqli = new mysqli("localhost", "root", "", "sitename"); 
$query = "SELECT * FROM categories WHERE id=parent_id"; 
echo $query; 
0

嘗試做這樣做:

if ($row['parent_id'] == $row['id']) { 
    echo '<li><a href="' , $row['url'] , '" title="' , $row['description'] , '">' , $row['category_name'] , '</a>'; 
} 
else { 
    echo "there is no match!"; 
} 

然後看看問題是不是在SQL查詢中,而是在你的應用程序邏輯中(我認爲它更可能)。

這就是說嘗試調試SQL查詢與phpMyAdmin。只需發佈您想要的查詢並檢查輸出。如果輸出正常,則查看您的邏輯,如果不查看您的查詢。

請儘量拆分您的問題分解成小塊,使你的調試變得更加容易。

希望它有幫助。