2013-05-01 67 views
0

我做了一个以前工作正常的注册表单,但是在我的代码中发生一些更改后,出现错误“错误:列计数与值计数不匹配在第1行“SQL错误:列计数与第1行的值计数不匹配

<?php 
$host = "localhost"; 
$user = "root"; 
$db_name= "login_stock"; 
$pass= "usbw"; 

$con = mysql_connect($host, $user, $pass); 

if (!$con) 
{ 
die('Could not connect: ' . mysql_error()); 
} 
mysql_select_db("login_stock", $con); 
$name=mysql_real_escape_string($_POST['name']); //This value has to be the same as in the HTML form file 
$password=mysql_real_escape_string($_POST['password']); //This value has to be the same as in the HTML form file 
$sql="INSERT INTO member_login (id,Name,Password, Allowance) VALUES (NULL,'$name','$password, 100000')"; 
if (!mysql_query($sql,$con)) { 
die('Error: ' . mysql_error()); 
} 
echo "The form data was successfully added to your database."; 
mysql_close($con); 
?> 

数据库中的id是一个自动递增的int和一个主键。但是,用户在注册时不需要输入他们的ID。

什么被认为是解决这个错误的最佳方法!

感谢先进!

回答

2

除了错误',你可以只下降id列列表:

INSERT INTO member_login (Name,Password, Allowance) VALUES ('$name','$password', 100000) 

应停止使用mysql_功能和使用准备好的语句来防止针对SQL注入。

+0

谢谢新鲜! :) 非常感激。这样一个简单的错误,让我看起来有些什么愚蠢 - - - 伟大的答案! – 2013-05-01 18:21:26

2
INSERT INTO member_login (id,Name,Password, Allowance) 
VALUES (NULL,'$name','$password, 100000'); 

...只有3个值(第三个是字符串'$password, 100000')。你的意思可能只是引用密码;

INSERT INTO member_login (id,Name,Password, Allowance) 
VALUES (NULL,'$name','$password', 100000); 
+0

谢谢你回答我的评论Joachim :) – 2013-05-01 18:38:09

相关问题