为什么我的SQL插入语句无法通过我的PHP脚本执行?

时间:2012-05-14 03:00:31

标签: php mysql sql syntax syntax-error

在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中的该用户进行连接。

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

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

您无法在整个查询中使用mysql_real_escape_string。这将逃避作为查询语法一部分的引号。您需要在要插入查询的值中使用它。

答案 2 :(得分:0)

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

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