【发布时间】:2016-08-08 09:09:05
【问题描述】:
我在使用 PHP 和 mysqli 对象使用 MySQL 时遇到了一个奇怪的问题。我有用户,我用它来连接 MySQL,并且该用户有足够的权限来使用特定的数据库。一切正常。
但我正在尝试获取所有数据库的列表。用户没有权限。显然我看不到任何查询结果。但奇怪的是,我在 $mysqli->errno、$mysqli->error 中也没有任何内容(没有权限被拒绝或任何类型的错误!)而且我的 $result 不是 FALSE。所以在这种情况下,一切看起来好像查询执行得很好,并且服务器上没有数据库(当然这不是真的)。
问题不在于如何赋予用户执行 SHOW DATABASES 的权限。问题是:为什么我没有看到任何错误,而用户缺乏执行特定查询的权限?更进一步,如何妥善处理这种情况?
我使用了这段代码,但它不能处理这种情况,因为 $result 不是 FALSE - 它只是正常的 $result,但有空行
$result = $mysqli->query("SHOW DATABASES");
if($result === FALSE){
echo 'We've got MySQL error! '.$mysqli->errno.':'.$mysqli->error);
}
感谢任何形式的建议!
【问题讨论】:
-
如SHOW DATABASES Syntax 中所述,“您只能看到那些您拥有某种特权的数据库”。
标签: php mysql mysqli error-handling user-permissions