2014-02-19 71 views
1

我收到錯誤:收到錯誤:「警告:mysqli_fetch_assoc()預計參數1被mysqli_result,布爾在給定的」

Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in /home/www/thetotempole.ca/phpimageupload/pagecounter.php on line 19 
title bodytext 

Warning: mysqli_fetch_row() expects parameter 1 to be mysqli_result, boolean given in /home/www/thetotempole.ca/phpimageupload/pagecounter.php on line 32 

,當我嘗試運行我的PHP頁面。我期待這個問題來自$ sql或$連接。我不相信這是我的$連接,因爲我的所有變量都是正確的,我沒有收到連接錯誤。該代碼應該顯示我的MySQL表的數據每頁四行。在顯示四行後,它將爲接下來的四行創建一個新頁面,依此類推。

這是我的完整的PHP頁面的代碼:

<?php 
if (isset($_GET["page"])) { $page = $_GET["page"]; } else { $page=1; }; 
$dbhost = 'ddm'; 
$dbuser = 'kdm'; 
$dbpass = 'Kder'; 
$dbname = 'kegbm'; 
$connection = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname); 
if(! $connection) 
{ 
    die('Could not connect: ' . mysqli_error()); 
} 
$start_from = ($page-1) * 4; 
$sql = 'SELECT * FROM `testdb` ORDER BY `created` ASC LIMIT "'.$start_from.'",4'; 
$rs_result = mysqli_query ($connection, $sql); 
echo mysqli_error($connection); 
?> 
<table> 
<tr><td>title</td><td>bodytext</td></tr> 
<?php 
while ($row = mysqli_fetch_assoc($rs_result)) { 
?> 
      <tr> 
      <td><? echo $row["title"]; ?></td> 
      <td><? echo $row["bodytext"]; ?></td> 
      </tr> 
<?php 
}; 
?> 
</table> 
<?php 
$sql = "SELECT COUNT(`created`) FROM `testdb`"; 
$rs_result = mysqli_query($connection, $sql); 
$row = mysqli_fetch_row($rs_result); 
$total_records = $row[0]; 
$total_pages = ceil($total_records/4); 

for ($i=1; $i<=$total_pages; $i++) { 
      echo "<a href='pagination.php?page=".$i."'>".$i."</a> "; 
}; 
?> 

感謝您的任何幫助。所有的幫助表示讚賞。

+0

嘗試,包括在你選擇連接變量!查詢 –

+0

在對結果集進行操作之前,您需要驗證您是否擁有有效的mysqli_result。您目前沒有執行任何錯誤處理。看來您正在獲得某種錯誤,並沒有處理它。 –

+0

僅供參考 - 不要引用LIMIT參數。他們需要是數字 – Phil

回答

1

這是您的解決方案:

$sql = "SELECT * FROM `testdb` ORDER BY `created` ASC LIMIT $start_from,4"; 

注:

在你的代碼

:之前和$ start_from後有「即不要必須

+0

我已經更新了我的問題中的代碼,現在我收到錯誤'您的SQL語法中有錯誤;請查看與您的MySQL服務器版本相對應的手冊,以便在其他錯誤之上使用在「1」附近的「0」,4'附近使用的正確語法。 – Kelsey

+0

@Michael ok看到編輯答案:) –

+0

得到它與編輯的答案一起工作。另外,MySQL表名中有大寫字母,這也給我帶來連接問題,因爲我沒有把大寫字母放在PHP代碼中。感謝您的幫助! – Kelsey

0

documentation狀態

Returns FALSE on failure. For successful SELECT, SHOW, DESCRIBE or 
EXPLAIN queries mysqli_query() will return a mysqli_result object. For other 
successful queries mysqli_query() will return TRUE. 

所以您的查詢是最有可能失敗的一些原因。找出原始SQL是什麼,你可能會發現你的錯誤。

相關問題