2015-07-04 89 views
0

我是PHP新手,不熟悉它的許多規則,所以這可能是一個愚蠢的問題。警告:mysqli_query():無法獲取mysqli

我有一個數據庫的頂級類別和子類別組合成一個表。我想先打印出所有頂級類別,然後打印出與該類別關聯的子類別。

這裏是我的代碼:

<?php 
session_start(); 

include_once "/mysqli_connect.php"; 

$categories0 = mysqli_query($conn, "SELECT * FROM categories WHERE type = 'category'"); 


mysqli_close($conn); 
?> 

<html> 
<head> 
<meta charset="UTF-8" /> 
</head> 
<body> 

<div id="wrap" class="animate"> 

<?php 

while ($categories = mysqli_fetch_array($categories0, MYSQLI_ASSOC)) { 

    $catecory_name = $categories['category']; 
    echo ' 
    <div class="content"> 
    <div class="content_container no_padding"> 
    <div class="content_container header"> 
    <p>'.$categories['category'].'</p> 
    </div> 
    '; 

    $subcategories0 = mysqli_query($conn, "SELECT * FROM categories WHERE type = 'subcategory'"); 

    while ($subcategories = mysqli_fetch_array($subcategories0, MYSQLI_ASSOC)) { 
     echo $subcategories['category']; 
    //mysqli_free_result($subcategories0); 
    } 

    echo ' 
    </div> 
    </div> 
    '; 

} 

?> 

</div> 
</div> 


</body> 
</html> 

這裏是連接腳本:

<?php 

DEFINE ('DB_USER', '*'); 
DEFINE ('DB_PASSWD', '*'); 
DEFINE ('DB_HOST', '*'); 
DEFINE ('DB_NAME', '*'); 

$conn = mysqli_connect(DB_HOST, DB_USER, DB_PASSWD, DB_NAME); 

if(!$conn){ 
    die('Database connection error'); 
} 

echo '<!-- Connected to database -->' 

?> 

它返回以下錯誤:當兩個查詢是DOCTYPE一切之上

Warning: mysqli_query(): Couldn't fetch mysqli 

很好,但是當第二個查詢低於doctype時,會發生錯誤。

第一個查詢始終運行沒有問題,它是第二個返回錯誤的查詢。

我似乎無法弄清楚發生了什麼,如果任何人都可以幫助我,將不勝感激。

+1

打開到數據庫的連接的代碼在哪裏? –

+0

爲什麼你不從代碼中移除'<!DOCTYPE html>'並嘗試! – Saty

+0

@HoBo Sapiens是的。第一個查詢運行正常,只是第二個查詢。 – Richie378

回答

2

你忘記關閉你的while循環。在需要關閉它的地方檢查評論。

<?php 
$categories0 = mysqli_query($conn, "SELECT * FROM categories WHERE type = 'category'"); 
?> 
<!DOCTYPE html> 

<?php 
while ($categories = mysqli_fetch_array($categories0, MYSQLI_ASSOC)) {// need to close your loop 

$catecory_name = $categories['category']; 
echo ' 
<div class="content"> 
<div class="content_container header"> 
<p>'.$categories['category'].'</p> 
</div> 
'; 
}// close here 
$subcategories0 = mysqli_query($conn, "SELECT * FROM categories WHERE type = 'subcategory'"); 
// The above line is where the error occurs 

while ($subcategories = mysqli_fetch_array($subcategories0, MYSQLI_ASSOC)) { 
    echo $subcategories['category']; 

} 


?> 

,因爲之後你的查詢將不會執行修訂

拆下頂部密切的聯繫。連接關閉後,連接變量將消失。

<?php 
session_start(); 

include_once "/mysqli_connect.php"; 

$categories0 = mysqli_query($conn, "SELECT * FROM categories WHERE type = 'category'"); 


?> 
+0

我試過了,但它仍然返回相同的錯誤。 – Richie378

+0

可以請你發佈你的整個代碼 – Saty

+0

@Satay我編輯的帖子包括完整的腳本,除了一些不相關的HTML部分。 – Richie378

0

今天我已經分階段了同樣的問題。但是你在代碼中沒有犯錯誤。

你是觸發select語句是:

見。您現在正在關閉與mysqli_close($ conn)的連接;

然後在while循環中獲取數據。如果連接已關閉,那麼PHP如何從MySQL表中獲取數據?

只要刪除mysqli_close($ conn);聲明並運行。

在最後一行,你可以把這段代碼。全部手術完成後。

相關問題