【发布时间】:2016-09-07 02:33:33
【问题描述】:
Mysqli_query 包含在我的代码中的以下封装函数中:
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] 数据库行 134: 262144
[11-May-2016 17:04:00 Europe/Berlin] MySQLi 链接是否有效?:
[2016 年 5 月 11 日 17:04:00 欧洲/柏林] 1
[11-May-2016 17:04:00 Europe/Berlin] mysqli
[11-May-2016 17:04:00 Europe/Berlin] 数据库行 139: 262144
[11-May-2016 17:04:00 Europe/Berlin] 执行查询:'SELECT * FROM 扫描 INNER JOIN 地块 关于 scans.scansId = landlot.scansId INNER JOIN区 在 scans.scansid = 区.scansId INNER JOIN 街道名称 在 scans.scansid = streetname.scansId WHERE Lot = 1;'
[11-May-2016 17:04:00 Europe/Berlin] PHP 警告:mysqli_query(): 无法获取 mysqli I:\xampp\htdocs\GLS_DBSearchProject\Database.php 在第 145 行
[11-May-2016 17:04:00 Europe/Berlin] 结果:NULL
[11-May-2016 17:04:00 Europe/Berlin] 数据库行 141: 262144
[11-May-2016 17:04:00 Europe/Berlin] 数据库行 147: 262144
[11-May-2016 17:04:00 Europe/Berlin] PHP 通知:尝试获取 非对象的属性 我:\xampp\htdocs\GLS_DBSearchProject\DatabaseSearch.php 在第 86 行
[11-May-2016 17:04:00 Europe/Berlin] 数据库行 134: 262144
[11-May-2016 17:04:00 Europe/Berlin] MySQLi 链接是否有效?:
[2016 年 5 月 11 日 17:04:00 欧洲/柏林] 1
[11-May-2016 17:04:00 Europe/Berlin] mysqli
[11-May-2016 17:04:00 Europe/Berlin] 数据库行 139: 262144
[11-May-2016 17:04:00 Europe/Berlin] 执行查询:'SELECT * FROM 扫描 INNER JOIN 地块 关于 scans.scansId = landlot.scansId INNER JOIN区 在 scans.scansid = 区.scansId INNER JOIN 街道名称 on scans.scansid = streetname.scansId WHERE Lot = 1 LIMIT 10 OFFSET 0;'
[11-May-2016 17:04:00 Europe/Berlin] PHP 警告:mysqli_query(): 无法获取 mysqli I:\xampp\htdocs\GLS_DBSearchProject\Database.php 在第 145 行
[11-May-2016 17:04:00 Europe/Berlin] 结果:NULL
[11-May-2016 17:04:00 Europe/Berlin] 数据库行 141: 262144
[11-May-2016 17:04:00 Europe/Berlin] 数据库行 147: 262144
[11-May-2016 17:04:00 Europe/Berlin] PHP 致命错误:调用 非对象上的成员函数 fetch_assoc() I:\xampp\htdocs\GLS_DBSearchProject\DatabaseSearch.php 在第 126 行
我真的很困惑为什么 mysqli_query 无法返回结果。我在整个项目中多次使用了我的 QueryDatabase() 函数,直到现在都没有遇到任何问题。我有一个 PHPUnit 测试,显示我的 QueryDatabase() 函数似乎工作正常,所有其他迹象都表明在 mysqli_query() 函数调用期间发生了问题。
我已广泛检查以确保数据库链接($this->link 中包含的 mysqli 对象)有效并指向适当的数据库。我还通过手动将其复制并粘贴到 mysql 查询浏览器中来检查以确保我的查询按预期工作。
如果我的查询有效并且我的数据库链接有效,为什么 mysqli_query() 会失败?
编辑:我从未关闭任何数据库连接。所以数据库连接不应该被关闭
【问题讨论】:
-
列名区分大小写?
scans.scansId和scans.scansid -
@MarkBaker 查询工作正常——我得到相同的结果——无论查询浏览器中的大小写如何。但是我需要花一点时间在代码中对此进行测试,因为我的查询是按程序生成的。
标签: php mysql debugging mysqli