mysqli_query содержится в следующем обволакивающей функции в моем коде:Почему mysqli_query() ломается? [Mysqli_query(): Не удалось получить MySQLi]
function QueryDatabase($query){
error_log("Database Line 134: " . memory_get_usage(true));
$QueryResult = NULL;
switch($this->RDBType){
case 'MySQL':
error_log('MySQLi link IS Valid?:'); error_log(boolval($this->link));
error_log(get_class($this->link));
error_log("Database Line 139: " . memory_get_usage(true));
error_log("Performing Query: '" . $query . "'");
$QueryResult = mysqli_query($this->link, $query);
error_log("Result: " . gettype($QueryResult));
error_log("Database Line 141: " . memory_get_usage(true));
break;
case 'PostGreSQL':
default:
break;
}
error_log("Database Line 147: " . memory_get_usage(true));
return $QueryResult;
}
Журнал PHP ошибка выглядит следующим образом:
[11-May-2016 17:04:00 Europe/Berlin] Database Line 134: 262144
[11-May-2016 17:04:00 Europe/Berlin] MySQLi link IS Valid?:
[11-May-2016 17:04:00 Europe/Berlin] 1
[11-May-2016 17:04:00 Europe/Berlin] mysqli
[11-May-2016 17:04:00 Europe/Berlin] Database Line 139: 262144
[11-May-2016 17:04:00 Europe/Berlin] Performing Query: 'SELECT * FROM scans INNER JOIN landlot on scans.scansId = landlot.scansId INNER JOIN district on scans.scansid = district.scansId INNER JOIN streetname on scans.scansid = streetname.scansId WHERE Lot = 1;'
[11-May-2016 17:04:00 Europe/Berlin] PHP Warning: mysqli_query(): Couldn't fetch mysqli in I:\xampp\htdocs\GLS_DBSearchProject\Database.php on line 145
[11-May-2016 17:04:00 Europe/Berlin] Result: NULL
[11-May-2016 17:04:00 Europe/Berlin] Database Line 141: 262144
[11-May-2016 17:04:00 Europe/Berlin] Database Line 147: 262144
[11-May-2016 17:04:00 Europe/Berlin] PHP Notice: Trying to get property of non-object in I:\xampp\htdocs\GLS_DBSearchProject\DatabaseSearch.php on line 86
[11-May-2016 17:04:00 Europe/Berlin] Database Line 134: 262144
[11-May-2016 17:04:00 Europe/Berlin] MySQLi link IS Valid?:
[11-May-2016 17:04:00 Europe/Berlin] 1
[11-May-2016 17:04:00 Europe/Berlin] mysqli
[11-May-2016 17:04:00 Europe/Berlin] Database Line 139: 262144
[11-May-2016 17:04:00 Europe/Berlin] Performing Query: 'SELECT * FROM scans INNER JOIN landlot on scans.scansId = landlot.scansId INNER JOIN district on scans.scansid = district.scansId INNER JOIN streetname on scans.scansid = streetname.scansId WHERE Lot = 1 LIMIT 10 OFFSET 0;'
[11-May-2016 17:04:00 Europe/Berlin] PHP Warning: mysqli_query(): Couldn't fetch mysqli in I:\xampp\htdocs\GLS_DBSearchProject\Database.php on line 145
[11-May-2016 17:04:00 Europe/Berlin] Result: NULL
[11-May-2016 17:04:00 Europe/Berlin] Database Line 141: 262144
[11-May-2016 17:04:00 Europe/Berlin] Database Line 147: 262144
[11-May-2016 17:04:00 Europe/Berlin] PHP Fatal error: Call to a member function fetch_assoc() on a non-object in I:\xampp\htdocs\GLS_DBSearchProject\DatabaseSearch.php on line 126
Я действительно путают, почему mysqli_query не возвращает результат. Я использовал свою функцию QueryDatabase() много раз в течение всего моего проекта и до сих пор не встречал никаких проблем. У меня есть тест PHPUnit, который показывает, что моя функция QueryDatabase() работает нормально, а все остальные признаки указывают на проблему, возникающую во время вызова функции mysqli_query().
Я проверил, что ссылка базы данных (объект mysqli, содержащаяся в ссылке $ this->) действительна и указывает на соответствующую базу данных. Я также проверил, чтобы мой запрос работал так, как ожидалось, вручную копируя и вставляя его в браузер запросов mysql.
Если мой запрос действителен и моя ссылка на базу данных действительна, почему может произойти сбой mysqli_query()?
Редактировать: Я никогда не закрывал какие-либо соединения с базой данных. Поэтому соединение с базой данных не должно быть закрыто
Возможный дубликат [Warning: mysqli \ _query(): Не удалось получить mysqli] (http://stackoverflow.com/questions/24973330/warning-mysqli-query-couldnt-fetch-mysqli) – cybermonkey
Чувствительность к регистру в именах столбцов? 'scans.scansId' и' scans.scansid' –
@MarkBaker. Запрос работает нормально - и я получаю те же результаты - независимо от того, капиляция в браузере запросов. Но мне понадобится минута, чтобы проверить это в коде, потому что мои запросы обрабатываются процедурно. –