2016-03-01 2 views
0

Я пытаюсь разделить страницу с PHP и MySQL, но покажите мне ошибки этотКак отделить страницу с PHP и MYSQL?

Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in D:\XAMPP\htdocs\all.php on line 17

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in D:\XAMPP\htdocs\all.php on line 58

Мой PHP код.

<html> 
<head> 
<title>All </title> 
</head> 
<body> 
<?php 
$dbhost = "localhost"; 
$dbusername = "root"; 
$dbpassword = ""; 
$dbname = "drill"; 
$mysqli = new mysqli ($dbhost, $dbusername, $dbpassword, $dbname); 

$strSQL = "SELECT * FROM data "; 
$objQuery = mysqli_query($mysqli,$strSQL); 

$Num_Rows = mysqli_num_rows($objQuery); 

$Per_Page = 2; // Per Page 

$Page = $_GET["Page"]; 
if(!$_GET["Page"]) 
{ 
    $Page=1; 
} 

$Prev_Page = $Page-1; 
$Next_Page = $Page+1; 

$Page_Start = (($Per_Page*$Page)-$Per_Page); 
if($Num_Rows<=$Per_Page) 
{ 
    $Num_Pages =1; 
} 
else if(($Num_Rows % $Per_Page)==0) 
{ 
    $Num_Pages =($Num_Rows/$Per_Page) ; 
} 
else 
{ 
    $Num_Pages =($Num_Rows/$Per_Page)+1; 
    $Num_Pages = (int)$Num_Pages; 
} 


$strSQL .=" order by no ASC LIMIT $Page_Start , $Per_Page";// no is autoincrement 

$objQuery = mysqli_query($mysqli,$strSQL); 
?> 
<table width="600" border="1"> 
    <tr> 
    <th width="91"> <div align="center">no</div></th> 
    <th width="98"> <div align="center">campaign </div></th> 
    <th width="198"> <div align="center">url</div></th> 

    </tr> 
<?php 
while($objResult = mysqli_fetch_array($objQuery,MYSQLI_ASSOC)) 
{ 
?> 
    <tr> 
    <td><div align="center"><?php echo $objResult["no"];?></div></td> 
    <td><div align="center"><?php echo $objResult["camp"];?></div></td> 
    <td><div align="center"><?php echo $objResult["url"];?></div></td> 

    </tr> 
<?php 
} 
?> 
</table> 

<br> 
Total <?php echo $Num_Rows;?> Record : <?php echo $Num_Pages;?> Page : 
<?php 
if($Prev_Page) 
{ 
    echo " <a href='$_SERVER[SCRIPT_NAME]?Page=$Prev_Page'><< Back</a> "; 
} 

for($i=1; $i<=$Num_Pages; $i++){ 
    if($i != $Page) 
    { 
     echo "[ <a href='$_SERVER[SCRIPT_NAME]?Page=$i'>$i</a> ]"; 
    } 
    else 
    { 
     echo "<b> $i </b>"; 
    } 
} 
if($Page!=$Num_Pages) 
{ 
    echo " <a href ='$_SERVER[SCRIPT_NAME]?Page=$Next_Page'>Next>></a> "; 
} 
mysqli_close($mysqli); 
?> 
</body> 
</html> 

Пожалуйста, помогите мне.

+1

Похоже, ваш запрос не удается, как бы' mysqli_query' возвращать логическое значение FALSE, а затем в 'mysqli_result'. Используйте' Эхо $ mysqli-> error; 'прямо за командой запроса, чтобы отобразить сообщение об ошибке. – OscarJ

+0

@OscarJ показать результат« Таблица «drill.data» не существует » – sammy

+0

Наконец-то я получил его, потому что мои данные таблицы не совпадают. Спасибо всем. – sammy

ответ

0

Согласно PHP документации для mysqli_query, функция:

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.

Любопытный, если линия $objQuery = mysqli_query($mysqli,$strSQL); терпит неудачу, которая возвращается false, который затем бросает ошибку на следующей строке, потому что это логическое , а не объект, который вы ожидаете.

Я не супер большой с Mysqli функций, но попробуйте заменить этот блок:

$objQuery = mysqli_query($mysqli,$strSQL); 

$Num_Rows = mysqli_num_rows($objQuery); 

С этим:

$objQuery = mysqli_query($mysqli,$strSQL); 

if ($objQuery == false) { 
    echo $mysqli->error; 
    exit; 
} 

$Num_Rows = mysqli_num_rows($objQuery); 

Никто из этого кода не проверяется, я должен отметить, так что вы возможно, придется немного поиграть с ним.

В конце концов, цель здесь состоит в том, чтобы попытаться выяснить, какая ошибка возникает, если она есть. Если ошибки нет, то есть еще одна отладка, но, по крайней мере, это начало.

Вот документация mysqli_query: http://php.net/manual/en/mysqli.query.php

И MySQLi :: $ ошибки: http://php.net/manual/en/mysqli.error.php

Надеется, что по крайней мере поможет вам добраться до сути.

0

Попробуйте создать соединение именно так.

$con=mysqli_connect($dbhost, $dbusername, $dbpassword, $dbname); 

, а затем передать эту связь с функцией

$objQuery = mysqli_query($con,$strSQL); 

Надежда это решит проблему

+0

код эквивалентен ей, поэтому это не должно меняться вообще. – OscarJ

0

попробовать

if($objQuery){ 
$Num_Rows = mysqli_num_rows($objQuery); 
} 
+0

В строке 17 не отображается ошибка, но строка 58 показывает ошибку. – sammy

0

$ strSQL = "SELECT * FROM данных";

Есть проблема с пространством между данными и «?

+0

Это не причина проблемы. Я удаляю пробел, но показываю ошибку. – sammy

Смежные вопросы