我有一个插入语句,我正在向DB查询。
$notes_sql = 'INSERT into notes SET
order_id = "'.$_GET['order_id'].'",
date_added = "'.$date_added.'",
note_message = "'.$_SESSION['note_message'].'"';
$notes_result = $conn->query($notes_sql) or die(mysqli_error($conn));
我知道sql语句是正确的,因为当我尝试回显它并在phpMyadmin中运行echo'd语句时,它会很好地插入它。
当我尝试运行insert语句时,出现以下错误:
INSERT命令拒绝用户'ideapale_amquery'@'localhost'表'notes'
第74行是查询语句的代码行。
我也知道我通过包含的connection.php文件正确连接到数据库,因为我正在使用我正在处理的页面上的包含文件中的变量。
我猜我在某种程度上没有正确连接到数据库,但我不确定它是什么。我从另一个工作正常的页面复制了这个页面的代码,所以我不明白为什么它不起作用。
为什么我的插件无法在php中运行?
*****更新*****
这是我的连接脚本:
function dbConnect($type) {
if($type == 'query'){
$user = 'ideapale_amquery';
$pwd = 'xxxxxxxxxxx';
} else if($type == 'admin') {
$user = 'ideapale_amadmin';
$pwd = 'xxxxxxxxxxxx';
} else {
exit('Unrecognized connection type');
}
$conn = new mysqli('localhost', $user, $pwd, 'ideapale_offorders') or die('Cannot open database');
return $conn;
}
这就是我从我所在的页面连接到连接脚本的方式:
$conn = dbConnect('admin');
我使用管理员权限连接到数据库,所以我不明白为什么它认为我想使用'amquery'用户名。
答案 0 :(得分:2)
您声称要与ideapale_amadmin
用户建立联系,但错误消息INSERT command denied to user 'ideapale_amquery'@'localhost' for table 'notes'
清楚地表明您不是。您正在使用错误的MySQLi对象(即您之前在脚本中创建的连接),或者您将错误的参数传递给dbConnect()
。
答案 1 :(得分:1)
尝试
$notes_result = $conn->query($notes_sql) or die(mysqli_error($conn));
获取更新错误。
如果回显的SQL工作正常,你必须猜测它是连接或权限问题。你在其他任何地方做插入吗?
编辑:所以这是一个权限问题,请运行:
GRANT INSERT PRIVILEGES ON *.* TO 'ideapale_amquery'@'localhost'
但是,如果您认为不需要,请先尝试:
SHOW GRANTS FOR 'ideapale_amquery'@'localhost'
答案 2 :(得分:1)
您应该检查并查看返回的错误。
更改:die(mysqli_error())
收件人:die(mysqli_error($conn))