为什么我的插件不能在php中工作?

时间:2010-07-01 01:59:13

标签: php database insert mysqli

我有一个插入语句,我正在向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'用户名。

3 个答案:

答案 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))