列数与第1行插入表中的值计数不匹配

时间:2013-01-28 01:54:12

标签: php mysql sql sql-insert

确定。我已经开始从头开始创建一个论坛,在注册我的浏览器后会出现这个错误:列数与第1行的值计数不匹配

$insert = mysql_query("
      INSERT INTO users (user_id, user_name, user_pass, user_email, user_date, user_level, user_posts) 
      VALUES( '', '" . mysql_real_escape_string($username) . "', '" . sha1($password) . "''" . mysql_real_escape_string($email) . "', NOW(), 0, 0)
");

我已经检查了好几千次......我看不出问题!

2 个答案:

答案 0 :(得分:2)

你忘记了

之间的逗号
'" . sha1($password) . "''" . mysql_real_escape_string($email) . "'
                        ^ HERE

修复,

'" . sha1($password) . "', '" . mysql_real_escape_string($email) . "'

您要将六个值插入七列。没有语法错误的原因是因为''实际上是有效的。这是通过加倍来逃避单引号的一种方式。

您当前的查询将如下所示

INSERT INTO tableName (col1, col2) VALUES ('hello''world')

实际上有效,但值的数量与表上的列数不匹配。

'hello''world'如果成功插入到表格中,则会hello'world

答案 1 :(得分:0)

您在密码和电子邮件字段之间缺少逗号:

sha1($password). "', '" ...

您应该使用PDOmysqli优先于mysql_*bcrypt优先于sha1以获取密码。