Good day to you all,

I ham having an issue the the following error (Fatal error: Call to a member function fetch_result() on a non-object in on line 167) which is the while ($row = $result->fetch_object()) every way I try to change this another error crops up.

If yo can find the time to assist me, it would be appreciated.

Thanks in advance

connection page

<?php
$dbhost                         = "xxxxx";
$dbuser                         = "xxxx";
$dbpass                         = "xxxxxx";
$dbname                         = "xxx";

$mysqli =  new mysqli($dbhost, $dbuser, $dbpass,$dbname) or die ("Error connecting to database");
if ($mysqli->connect_errno){
    printf("Connection failed: %s\n", $mysqli->connect_error);
    exit();
    }
?>

Index

<?php
    include('connect.php'); 

    $tableName="country";       
    $targetpage = "index.php";  
    $limit = 10; 
    $query = $msqli->query("SELECT COUNT(*) as num FROM $tableName");
    $total_pages = $query;
    $total_pages = $total_pages[num];
    $stages = 3;
    $page = mysqli_escape_string($_GET['page']);
        if($page){
            $start = ($page - 1) * $limit; 
        }else{
            $start = 0; 
            }   
        // Get page data
        $result = $mysqli->query("SELECT * FROM $tableName LIMIT $start, $limit");
        // Initial page num setup
        if ($page == 0){$page = 1;}
            $prev = $page - 1;  
            $next = $page + 1;                          
            $lastpage = ceil($total_pages/$limit);      
            $LastPagem1 = $lastpage - 1;                    
            $paginate = '';
                if($lastpage > 1)
                {   
                    $paginate .= "<div class='paginate'>";
                    // Previous
                    if ($page > 1){
                        $paginate.= "<a href='$targetpage?page=$prev'>previous</a>";
                    }else{
                        $paginate.= "<span class='disabled'>previous</span>"; }
                    // Pages    
                    if ($lastpage < 7 + ($stages * 2))   // Not enough pages to breaking it up
                    {   
                        for ($counter = 1; $counter <= $lastpage; $counter++)
                        {
                            if ($counter == $page){
                                $paginate.= "<span class='current'>$counter</span>";
                            }else{
                                $paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";}                  
                        }
                    }
                    elseif($lastpage > 5 + ($stages * 2))   // Enough pages to hide a few?
                    {
                        // Beginning only hide later pages
                        if($page < 1 + ($stages * 2))        
                        {
                            for ($counter = 1; $counter < 4 + ($stages * 2); $counter++)
                            {
                                if ($counter == $page){
                                    $paginate.= "<span class='current'>$counter</span>";
                                }else{
                                    $paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";}                  
                            }
                            $paginate.= "...";
                            $paginate.= "<a href='$targetpage?page=$LastPagem1'>$LastPagem1</a>";
                            $paginate.= "<a href='$targetpage?page=$lastpage'>$lastpage</a>";     
                        }
                        // Middle hide some front and some back
                        elseif($lastpage - ($stages * 2) > $page && $page > ($stages * 2))
                        {
                            $paginate.= "<a href='$targetpage?page=1'>1</a>";
                            $paginate.= "<a href='$targetpage?page=2'>2</a>";
                            $paginate.= "...";
                            for ($counter = $page - $stages; $counter <= $page + $stages; $counter++)
                            {
                                if ($counter == $page){
                                    $paginate.= "<span class='current'>$counter</span>";
                                }else{
                                    $paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";}                  
                            }
                            $paginate.= "...";
                            $paginate.= "<a href='$targetpage?page=$LastPagem1'>$LastPagem1</a>";
                            $paginate.= "<a href='$targetpage?page=$lastpage'>$lastpage</a>";     
                        }
                        // End only hide early pages
                        else
                        {
                            $paginate.= "<a href='$targetpage?page=1'>1</a>";
                            $paginate.= "<a href='$targetpage?page=2'>2</a>";
                            $paginate.= "...";
                            for ($counter = $lastpage - (2 + ($stages * 2)); $counter <= $lastpage; $counter++)
                            {
                                if ($counter == $page){
                                    $paginate.= "<span class='current'>$counter</span>";
                                }else{
                                    $paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";}                  
                            }
                        }
                    }
                    // Next
                    if ($page < $counter - 1){ 
                        $paginate.= "<a href='$targetpage?page=$next'>next</a>";
                    }else{
                        $paginate.= "<span class='disabled'>next</span>";
                        }
                    $paginate.= "</div>";        
            }
 echo $total_pages.' Results';
 // pagination
 echo $paginate;
?>
<ul>
<?php 
 while ($row = $result->fetch_object()) {
            echo '<li>'.$row['country'].'</li>';
 }
    ?>
</ul>
<?php //include '../includes/footer.php';?>
</body>
</html>

try this please :

while ($row = $result->fetch_object()) {
            echo '<li>'.$row->country.'</li>';
 }

Melvita,

Thanks for your reply
Fatal error: Call to a member function query() on a non-object in index.php on line 67

which is $query = $msqli->query("SELECT COUNT(*) as num FROM $tableName");

thanks again
david

Melvita,
I can see I have missed out the y in mysqli, so I have corrected this and I get the same error.

Fatal error: Call to a member function fetch_object() on a non-object in /index.php on line 167

Thanks again
David

Do print_r($result) after line 18 to see what exactly it contains.

What is the result of pritaeas suggestion print_r($result) at line 19 ?

The error tell you that $result is not an object so you can try this :

while($row = $mysqli->fetch_object($result)){

Hi Pritaeas,

Thanks for your assistance

$result = $mysqli->query("SELECT * FROM $tableName LIMIT $start, $limit");
print_r($result);

I have added the above code and i have no output

I have also added the print_r on the below execution which is on line 7 also no output

$query = $mysqli->query("SELECT COUNT(*) as num FROM $tableName");
$total_pages = $query;
print_r($query);

Thanks
David

query returns false on failure, so I suggest you add error checking. Has to be a database issue then.

Hi Pritaeas, Melvita,

Thank you both for your perseverance.

@ Melvita I have changed the code to

while($row = $mysqli->fetch_object($result)){

As advised

Having checked the password info by removing 1 charactor from the used password I get the usual unable to connect to the db.

I have added error checking with no error showing

ini_set('display_errors','on');
error_reporting(E_ALL);

db error check line
`mysqli = new mysqli($dbhost, $dbuser, $dbpass,$dbname) or die ("Error connecting to database");

if ($mysqli->connect_errno){
    printf("Connection failed: %s\n", $mysqli->connect_error);
    exit();
    }`

I changed mysql on line 11 as it is depreciated to
$page = mysqli_escape_string($_GET['page']); and I get 2 additional errors relating to this change

Warning: mysqli_escape_string() expects exactly 2 parameters, 1 given in /index.php on line 11

Warning: mysqli_escape_string() expects exactly 2 parameters, 1 given in /index.php on line 11

Notice: Use of undefined constant num - assumed 'num' in /index.php on line 9

Notice: Undefined index: page in /index.php on line 11

Fatal error: Call to undefined method mysqli::fetch_object() in /index.php on line 107

Thanks again

David

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.