2016-03-01 124 views
0

我做了一个注册码电子邮件,用户,传递,当我点击“zr”在数据库中插入此信息,但我得到以下错误:PHP,MySQL错误:列计数与第1行的值计数不匹配

MySQL error: Column count doesn’t match value count at row 1 

代码:

include ('config.php'); 
include('login_css.php'); 
$error = ""; 
if (isset($_POST['zr'])){ 
$date = date("m d Y"); 
$user_name = strip_tags($_POST['user']); 
$user_pass = strip_tags($_POST['pass']); 
$user_email = strip_tags($_POST['email']); 
$empty = strip_tags($_POST['none']); 
$empty.= strip_tags($_POST['none']); 
$empty.= strip_tags($_POST['none']); 
$day = strip_tags($_POST['day']); 
$month = strip_tags($_POST['month']); 
$year = strip_tags($_POST['year']); 
$dob = "$day/$month/$year"; 

if ($user_name == "") { 
    $error = "Firstname cannot be left empty."; 
    echo $error; 
} 
else if ($user_pass == "") { 
    $error = "Lastname cannot be left empty."; 
    echo $error; 
} 
else if ($user_email == "") { 
    $error = "Email cannot be left empty."; 
    echo $error; 
} 

//Check the username doesn't already exist 
$check_username = mysql_query("SELECT yser FROM users WHERE username='$user_name'"); 
$numrows_username = mysql_num_rows($check_username); 
if ($numrows_username != 0) { 
    $error = 'That username has already been registered.'; 
    echo $error; 
} 
else 
{ 
    $check_email = mysql_query("SELECT email FROM users WHERE email='$user_email'"); 
$numrows_email = mysql_num_rows($check_email); 
if ($numrows_email != 0) { 
    $error = 'That email has already been registered.'; 
    echo $error; 
} 
else 
{ 
//Register the user 
$register = mysql_query("INSERT INTO users(user,pass,email) VALUES('','$user_name','$user_pass','$user_email','$date')") or die(mysql_error()); 
die('Registered successfully!'); 
} 
} 
} 

?> 

<!-- Form Mixin--> 
<!-- Input Mixin--> 
<!-- Button Mixin--> 
<!-- Pen Title--> 
<div class="pen-title"> 
<title>WebooHub - Join</title> 
    <h1>WebooHub - Join</h1> 
</div> 
<!-- Form Module--> 
<div class="module form-module"> 
    <div class="toggle"><i class="fa fa-times fa-pencil"></i> 
    </div> 
    <div class="form"> 
    <h2>Create Your Account</h2> 
    <form action="u_register" method="POST"> 



     <button>Join Now</button> 
    </form> 
    </div> 
    <div class="cta"><a href="login.php">Login?</a></div> 
</div><strong></strong> 
+5

@FakhruddinUjjainwala我最近注意到你发布了一个答案和评论。 OP将会看到你的答案,不需要评论。 –

+0

同样的错误:@FakhruddinUjjainwala Ujjainwala警告:mysql_num_rows():提供的参数不是第33行中的C:\ AppServ \ www \ Weboo \ WeboHub \ app \ join \ u_register.php中的有效MySQL结果资源 列数不匹配第1行的值计数 –

+0

[您的脚本存在SQL注入攻击风险。](http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) –

回答

4

错误消息告诉你到底出了什么问题。看看你的INSERT声明:

INSERT INTO users(user,pass,email) VALUES('','$user_name','$user_pass','$user_email','$date') 

您指定3列,但提供5个值。

INSERT INTO users(user,pass,email) VALUES('$user_name','$user_pass','$user_email') 

或指定的5列,你要插入值:

INSERT INTO users(someColumn,user,pass,email,someOtherColumn) VALUES('','$user_name','$user_pass','$user_email','$date') 

而且,和

要么你要插入只提供3个值很重要,你的代码是对SQL注入开放。这意味着你盲目地执行用户在数据库查询中发送给你的任何代码。请看看this以及this。使用查询参数准备语句,以便您将用户输入视为而不是代码


此外,你是在纯文本存储用户密码。这是严重不负责任的密码处理。请hash user passwords correctly。用户密码应该隐藏在单向散列之后,并且从不可以检索到,即使您不是系统所有者。

0

退房列VS值:

你有3列和5倍的值。这些需要平等。

$register = mysql_query("INSERT INTO users(user,pass,email) VALUES('','$user_name','$user_pass','$user_email','$date')") or die(mysql_error()); 
die('Registered successfully!'); 

也强烈建议您使用mysqli

+0

警告:mysql_num_rows():提供的参数不是C中有效的MySQL结果资源: \ AppServ \ www \ Weboo \ WeboHub \ app \ join \ u_register.php在第33行 第1行的列计数与值计数不匹配 –

+0

@MeralAhmed这是一个'select query'错误'列计数与值不匹配在第1行计数'上面的答案将解决这个问题。 –

相关问题