在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中的该用户进行连接。
此外,我能够插入到我在同一个脚本中创建的另一个表中。
答案 0 :(得分:2)
此问题不在于您的插入 - 错误是连接到数据库,因此它甚至没有运行insert语句。
仔细检查您传递给mysql_connect()的凭据,从错误消息“拒绝访问用户'schaffins'@'localhost'(使用密码:否)”出现问题与您的密码有关。
答案 1 :(得分:1)
您无法在整个查询中使用mysql_real_escape_string
。这将逃避作为查询语法一部分的引号。您需要在要插入查询的值中使用它。
答案 2 :(得分:0)
有时数据库连接仅在某些操作&amp; |之后才会发生验证发生。在尝试执行任何sql之前,请确保您具有打开的连接。如果连接嵌套在if / else代码块中,则可能无法满足条件并且不会建立db连接。
尝试查找数据库连接并移动(或复制)到php中更“全球化”的位置 - 也就是php中的某个地方,确保在任何可能排除连接的if语句之前建立数据库连接在不允许的条件