php - PHP 在一个用户上插入数据库,但不在另一个具有相同权限的用户上
问题描述
当我的注册表单尝试插入 user1(已被授予所有特权)时,它可以工作。但是当我尝试使用 user2 插入时(它也被授予所有特权)它不会插入。我没有收到任何错误,并且已经进行了几个小时的故障排除,但找不到问题,更好的是解决方案。
User2 没有所有特权(就像任何理智的人当然应该做的那样)。当我尝试授予它所有权限时,它仍然无法插入,而具有相同权限的 user1 可以。
由于我不知道问题出在哪里,我只能包含似乎正确的数据库连接代码。如果需要其他任何东西,我很乐意把它放在这里。
$dbservername = "localhost";
$dbusername = "user1";
$dbpassword = "password1";
//$dbpassword = "password2"; (I keep this here to change users fast when troubleshooting and yes I change the username everytime)
$dbname = "database1";
$db = new mysqli($dbservername, $dbusername, $dbpassword, $dbname);
我希望 user2 插入数据库,但它不会。我没有任何错误消息。
特权:
编辑:
我试过运行马丁给出的代码,两个用户都连接了......
解决方案
请使用以下代码给自己错误反馈:
$dbServerName = "localhost";
$dbUsername = "user1";
$dbPassword = "password1";
$dbName = "database1";
$mysqliDriver = new \mysqli_driver();
$mysqliDriver->report_mode = MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT;
try {
$db = new \mysqli($dbServerName, $dbUsername, $dbPassword, $dbName);
}
catch(\mysqli_sql_exception | \Exception $em) { // format requires PHP 7.2
error_log(print_r($em,true)); // READ THIS!!!
die("failed. Check the error log!");
}
die("We are connected!");
这设置了 MySQLi 驱动程序报告模式,它可以提供 i) 异常报告和 ii) 更多信息/更容易访问失败原因。
请让我们知道(更新/编辑您的问题)与 User2 连接时错误报告捕获的内容。
注意:如果您没有运行 PHP7.2,请将该行替换为:
catch(\Exception $em)
笔记:
您的 pastebin 代码;您将 $db 创建为 PHP对象,但将其与静态命令(mysqli_query($db, $sql)
等)一起使用,就好像它不是对象(过程)一样。这是不一致的,会给你带来问题。
推荐阅读
- javascript - 希望从 aspx 表单将 JSON 对象发送到 Sql Server
- php - PHP如何将起始值分配给变化的值?
- javascript - React Native 输入字段占位符在 iOS 中不起作用
- javascript - 如何在 Heroku 上显示 console.log()?
- php - 由于刷新浏览器而导致的重复操作
- javascript - 从时刻对象javascript获取天数
- java - BufferedReader readLine() 在 while 循环中不起作用
- mysql - 无法在 Mysql-cluster 中启动 SQL 节点
- python - 使用 NaiveBayes 算法时如何使用 One-hot Encode?
- android - ARCore – 超过 24 小时的云锚点或超过 7 天的特征点