2014-05-07 83 views
-1

收到此錯誤:mysqli_num_rows()預計參數1被mysqli_result,空給出

mysqli_num_rows() expects parameter 1 to be mysqli_result, null given 

不知道爲什麼和瀏覽過不少話題就到這裏試圖弄明白。我知道這與我的查詢有關,但我無法將這些部分放在一起。

感謝您的協助,我欣賞它!

<?php 
session_start(); 
if (!isset($_SESSION['email'])){ 
    echo "Please login first."; 
    exit(); 
}else{ 
include ("header.php"); 
require_once ('mysqli_connect.php'); 
$id=$_GET['id']; 
$query = "SELECT * FROM post WHERE post_id=$id"; 
$result = @mysqli_query ($query); 
$num = mysqli_num_rows($result); 
if ($num > 0) { 
    while ($row = mysqli_fetch_array($result, MYSQL_ASSOC)){ 
?> 
     <form action="update.php" method="post"> 
     <p>Title: <input name="title" size=50 value="<? echo $row['title']; ?>"></p> 
     <p>Author: <input name="author" size=50 value="<? echo $row['author']; ?>"></p> 
     <p>Post: <input name="post" size=50 value="<? echo $row['post']; ?>"></p> 
     <p> 
     <input type=submit value=update> 
     <input type=reset value=reset> 
     <input type=hidden name="post_id" value="<? echo $row['post_id']; ?  >"> 
     </form> 
<? 
    } 
} 
} 
?> 
+1

旁註:改變'<? echo $ row ['post_id']; ? >'>''''''echo $ row ['post_id'];?>「>' –

+0

另外,這個'$ id = $ _ GET ['id'];'應該很可能是'$ id = $ _ GET [ 'post_id'];'考慮將引號放在''中。 –

+0

啊,哎呀,我把它格式化了,當我把它發佈在這裏時。我在實際的文件中就是這樣。雖然很漂亮!確保仔細檢查。 – Wolfy36

回答

0

在行$result = @mysqli_query ($query);@會沉默的任何錯誤。在繼續之前檢查$result是不是false,null或其他一些錯誤。

你可能想要不帶@,直到你有它的工作,所以你可以得到更有意義的錯誤消息。

+0

嗨!謝謝你!我改變它爲$ result = mysqli_query($ dbc,$ query); 它將錯誤切換爲mysqli_num_rows()期望參數1爲mysqli_result,布爾給定在...這使我認爲添加$ dbc沒有修復它。 – Wolfy36

+0

mysqli_query在發生錯誤時返回false。你是否確認'$ dbc'是一個有效的鏈接? – Joe

+0

$ dbc設置正確,並且可以在網站的所有其他頁面上工作,我回過頭檢查了一下,沒有看到任何問題。 Gah,很困惑 – Wolfy36

0

第一件事是,在最後一節代碼是不正確intenated..like value="<? echo $row['post_id']; ? ..第二,因爲喬說@符號抑制錯誤..所以你需要從你的代碼中刪除這些@symbol ..因此,代碼必須是..

<?php 

session_start(); 

if (!isset($_SESSION['email'])){ 

echo "Please login first."; 

exit(); 

}else{ 

include ("header.php"); 

require_once ('mysqli_connect.php'); 

$id=$_GET['id']; 

$query = "SELECT * FROM post WHERE post_id=$id"; 

$result = mysqli_query ($query); 

$num = mysqli_num_rows($result); 

if ($num > 0) { 

while ($row = mysqli_fetch_array($result, MYSQL_ASSOC)){ 

?> 

    <form action="update.php" method="post"> 
    <p>Title: <input name="title" size=50 value="<? echo $row['title']; ?>"></p> 
    <p>Author: <input name="author" size=50 value="<? echo $row['author']; ?>"></p> 
    <p>Post: <input name="post" size=50 value="<? echo $row['post']; ?>"></p> 
    <p> 
    <input type=submit value=update> 
    <input type=reset value=reset> 
    <input type=hidden name="post_id" value="<? echo $row['post_id']; ?>"> 
    </form> 

希望這一個可以幫助你..如果就那麼任何問題評論如下.. :)

+0

嘗試此操作時,它會引發一個額外的錯誤,指出「mysqli_query()期望至少有2個參數」:( – Wolfy36

+0

這意味着您需要傳遞一個有效的mysqli鏈接資源以及您希望執行的查詢的函數。這使得函數知道建立到服務器的連接使用...嘗試使用mysql_connect() –

+0

'mysql_connect()'?OP正在使用'mysqli_ *' –

0

我認爲你必須檢查GET的值'身份證']具有價值或不具有價值,並且查詢由適當的數據形成。 您可能會收到錯誤,因爲結果爲空。 並檢查連接。

相關問題