Предупреждение: mysqli_query (): Не удалось получить mysqli

У меня проблема, когда я не могу получить результат из моей базы данных MySQL (через PHP). Я использую ту же функцию в других местах, и она работает безупречно. Однако на данный момент я продолжаю получать сообщение «Предупреждение: mysqli_query (): Не удалось получить mysqli». Подробности проблемы описаны ниже. Я использую совершенно аналогичную функцию в другом месте (getAllCountries, как показано ниже) в моем PHP, который отлично работает:

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()); } 

Таким образом, проблема заключается в следующем:

У меня есть php-файл, содержащий следующий код:

 <?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()); } 

мой файл functions.php имеет следующую строку (вместе с другими не относящимися к делу функциями):

 require 'dbfunctions.php'; 

и мой dbfunctions.php выглядит так:

 <?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; } 

В моем PHP-документе я вызываю следующую функцию:

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

и функция myAccountPage () объявляется в том же файле, что и функция getUserPicPath (), эта функция getUserPicPath () вызывается следующим образом:

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

Я использую вкладки ( http://jqueryui.com/tabs/#default ) на своей веб-странице, и именно там я хочу ее вызвать. Функция myAccountPage (), которая дает следующую ошибку:

 Warning: mysqli_query(): Couldn't fetch mysqli in C:\Users\Dennis\Documents\My Dropbox\xxx\zzz\www\Project Files\includes\dbfunctions.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:\Users\Dennis\Documents\My Dropbox\me&roxy\WE\final project\Project Files\myaccount.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:\Users\Dennis\Documents\My Dropbox\me&roxy\WE\final project\Project Files\myaccount.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:\Users\Dennis\Documents\My Dropbox\me&roxy\WE\final project\Project Files\myaccount.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 

Я думаю, что это происходит потому, что когда вы закрываете соединение с базой данных в первый раз, вы забудете сделать:

 unset($connection); 

И затем, когда вы снова попытаетесь подключиться к базе данных, он дерьмо из-за того, что он по-прежнему настроен на закрытое соединение.

Вы забыли включить подключение к базе данных. Просто добавьте $connection к вашему sql-запросу:

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