为什么我的插入在php中不起作用?

为什么我的插入在php中不起作用?,php,database,insert,mysqli,Php,Database,Insert,Mysqli,我有一个insert语句,我正在向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(

我有一个insert语句,我正在向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中运行该回显语句时,它会很好地插入它

尝试运行insert语句时,出现以下错误:

针对表“notes”的用户“ideapale\u amquery”@“localhost”的INSERT命令被拒绝

第74行是查询语句的代码行

我还知道我通过included connection.php文件正确地连接到了DB,因为我使用的是我正在处理的页面上包含的文件中的变量

我猜我没有正确连接到DB,但我不确定它是什么。我从另一个工作正常的页面复制了这个页面的代码,所以我不明白为什么它不工作

为什么我的插入在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”用户名

试试看

$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'

您应该检查并查看返回的错误是什么

更改:
die(mysqli\u error())


到:
die(mysqli\u error($conn))
您声称正在连接
ideapale\u amadmin
用户,但表“notes”的用户“ideapale\u amquery”@“localhost”被拒绝的错误消息
INSERT命令清楚地表明您不是。您使用了错误的MySQLi对象(即您在脚本前面创建的连接),或者您将错误的参数传递给了
dbConnect()

这是我收到的更新错误:INSERT命令被拒绝给用户'ideapale_amquery'@'localhost'用于表'notes'哈哈,时间或其他什么-我只是更新了我的答案来猜测。简单地说,你需要向该用户授予INSERT权限。看到我更新的答案(等一下)。所以我想我只对我选择的用户有查询权限,但我选择了对整个数据库拥有所有权限的管理员用户。我解决了问题。我正在对包含的文件添加另一个dbConnect函数调用。对不起,浪费了你的时间。谢谢你的帮助!顺便说一句,永远不要这样做:
order\u id=“”。$\u GET['order\u id']”。
。这就是SQL注入攻击。总是,总是清理用户输入,通常使用
mysql\u real\u escape\u string
。问题是由于各种原因,“以后”通常不会发生。从一开始就做对。:)安全是你首先需要担心的事情。不要掉以轻心,不要拖延。否则,你会后悔的。如果你使用OOP,那么就使用它=>$conn->error@zeckdude,->error是mysqli对象的属性。在您的情况下,只需输入die:die($conn->error);