Question

[Solved] Warning: mysqli_query(): Couldn’t fetch mysqli

I have a problem where I can not retrieve the result from my MySQL database (via PHP). I use the same function in other places and it works flawlessly. However at this point i keep getting the “Warning: mysqli_query(): Couldn’t fetch mysqli” error. Details of the problem are explained below.
I use a quite similar function elsewhere (getAllCountries as seen below) in my PHP which does work perfectly:

function getAllCountries()
{
    $result = db_query("SELECT countryid, name FROM country ORDER BY name ASC");

    echo "<select class=addresscountry name=country>";
    while($row = mysqli_fetch_array($result)) {
      echo '<option value="' . $row['countryid'] . '">' . $row['name'] . '</option>';
    }
    echo "</select>";

    mysqli_close(db_connect());
}

So the problem is the following:

I have a php file containing the following code:

<?php
require 'includes/functions.php';

function getUserPicPath()
{
    $userid = $_SESSION['userid'];

    $result = db_query("SELECT picture FROM user WHERE userid='$userid'");

    while($row = mysqli_fetch_array($result)) {
        $picturepath = $row['picture'];
    }

    echo $picturepath;

    mysqli_close(db_connect());
}

my functions.php file has the following line (together with other non-relevant functions):

require 'dbfunctions.php';

and my dbfunctions.php looks like this:

<?php
function db_connect()
{
    require ".db_password.php";

    static $connection;

    if(!isset($connection)) {
        $connection = mysqli_connect('localhost',$username,$password,$dbname);
    }

    if($connection === false) {
        return mysqli_connect_error(); 
    }

    return $connection;
}

function db_query($query) 
{
    $connection = db_connect();

    $result = mysqli_query($connection,$query);

    return $result;
}

In my PHP document I call the following function :

if ($userid == -1)
    {
        showNotAuthorizedPage();
    } else {
        myAccountPage();
    }

and the myAccountPage() function is declared in the same file as the getUserPicPath() function, this getUserPicPath() function is called as follows:

<div id="tabs-2">
    <p><?php getUserPicPath(); ?></p>
  </div>

I use the tabs (http://jqueryui.com/tabs/#default) on my webpage and that is where i want to call it in.
The myAccountPage() function which gives the following error :

Warning: mysqli_query(): Couldn't fetch mysqli in C:UsersDennisDocumentsMy DropboxxxxzzzwwwProject Filesincludesdbfunctions.php on line 29
Call Stack
#   Time    Memory  Function    Location
1   0.0000  256880  {main}( )   ..myaccount.php:0
2   0.0010  283328  myAccountPage( )    ..myaccount.php:181
3   0.0070  285368  getUserPicPath( )   ..myaccount.php:121
4   0.0070  285528  db_query( ) ..myaccount.php:11
5   0.0070  285624  mysqli_query ( )    ..dbfunctions.php:29

( ! ) Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, null given in C:UsersDennisDocumentsMy Dropboxme&roxyWEfinal projectProject Filesmyaccount.php on line 13
Call Stack
#   Time    Memory  Function    Location
1   0.0000  256880  {main}( )   ..myaccount.php:0
2   0.0010  283328  myAccountPage( )    ..myaccount.php:181
3   0.0070  285368  getUserPicPath( )   ..myaccount.php:121
4   0.0080  285768  mysqli_fetch_array ( )  ..myaccount.php:13

( ! ) Notice: Undefined variable: picturepath in C:UsersDennisDocumentsMy Dropboxme&roxyWEfinal projectProject Filesmyaccount.php on line 17
Call Stack
#   Time    Memory  Function    Location
1   0.0000  256880  {main}( )   ..myaccount.php:0
2   0.0010  283328  myAccountPage( )    ..myaccount.php:181
3   0.0070  285368  getUserPicPath( )   ..myaccount.php:121

( ! ) Warning: mysqli_close(): Couldn't fetch mysqli in C:UsersDennisDocumentsMy Dropboxme&roxyWEfinal projectProject Filesmyaccount.php on line 19
Call Stack
#   Time    Memory  Function    Location
1   0.0000  256880  {main}( )   ..myaccount.php:0
2   0.0010  283328  myAccountPage( )    ..myaccount.php:181
3   0.0070  285368  getUserPicPath( )   ..myaccount.php:121
4   0.0100  285864  mysqli_close ( )    ..myaccount.php:19
Enquirer: Dennis

||

Solution #1:

I think it is because when you close the database connection the first time, you forget to do:

unset($connection);

And then when you try connecting to the database again, it craps out because it is still set to the closed connection.

Respondent: Dennis

Solution #2:

You forgot the include your database connection. Just add the $connection to your sql query:

function getAllCountries()
{
    $result = db_query($connection,"SELECT countryid, name FROM country ORDER BY name ASC");

    // enter code here
}
Respondent: hofan41

The answers/resolutions are collected from stackoverflow, are licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0 .

Most Popular

To Top
India and Pakistan’s steroid-soaked rhetoric over Kashmir will come back to haunt them both clenbuterol australia bossier man pleads guilty for leadership role in anabolic steriod distribution conspiracy