0

在 php 脚本中,我尝试了几种不同的插入语句:

$query = "INSERT INTO table (charfield,charfield,intfield,decimalfield) VALUES ('$stringvar','$stringvar',$intvar,$decimalvar)";
$query = "INSERT INTO table (charfield,charfield,intfield,decimalfield) VALUES ('".$stringvar."','".$stringvar."',".$intvar.",".$decimalvar.")";
$query = 'INSERT INTO table (charfield,charfield,intfield,decimalfield) VALUES ("'.$stringvar.'","'.$stringvar.'",'.$intvar.','.$decimalvar.')';
$query = 'INSERT INTO table (charfield,charfield,intfield,decimalfield) VALUES ("'.$stringvar.'","'.$stringvar.'","'.$intvar.'","'.$decimalvar.'")';

我也使用以下几种不同的方式执行了它:

mysql_real_escape_string($query);
mysql_query($query);
$result = @mysql_query($query);

我已经回应了正在连接的语句,它看起来很好。即使我将其复制并粘贴到 phpmyadmin sql 编辑器中,它也可以正常执行。数据库是 MySQL 并且用户具有正确的权限。

我究竟做错了什么?


编辑:

错误消息使用or die

Access denied for user 'schaffins'@'localhost' (using password: NO)

我已经添加了一个有权选择、插入和更新的用户,并且在执行任何操作之前,我在 php 中使用该用户进行连接。

此外,我能够插入到我在同一个脚本中创建的另一个表中。

4

3 回答 3

2

这个问题不在于您的插入 - 错误是连接到数据库,因此它甚至没有达到运行插入语句的程度。

从错误消息“用户'schaffins'@'localhost'的访问被拒绝(使用密码:否)”中仔细检查您传递给mysql_connect()的凭据,看来问题出在您的密码上。

于 2012-05-14T03:19:00.570 回答
1

您不能mysql_real_escape_string在整个查询中使用。这将转义作为查询语法一部分的引号。您需要在要插入查询的值上使用它。

于 2012-05-14T03:09:19.743 回答
0

有时数据库连接仅在某些操作后发生 &| 进行验证。在尝试执行任何 sql 之前,请确保您有一个打开的连接。如果连接嵌套在 if/else 代码块中,则可能不满足条件并且不会建立 db 连接。

尝试找到 db 连接并将其移动(或复制)到 php 中更“全球化”的位置 - 也就是 php 中的某个位置,以确保在任何可能排除基于条件建立连接的 if 语句之前建立 db 连接不允许

于 2012-05-14T18:44:16.833 回答