2012-05-25 82 views
-2

当用户在我的网站上注册时,他们需要输入个人信息。输入的详细信息将被添加到我的数据库中的personaldetails表中。我有下面的代码,但它不起作用,我不明白为什么。谁能帮忙?我得到错误:查询是空的在数据库中插入发布的详细信息

$myusername=$_POST['username']; 
    $mypassword=$_SESSION['mypassword']; 
    $firstname = $_POST['firstname']; 
    $surname = $_POST['surname']; 
    $dob = $_POST['dob']; 
    $totalwins = $_POST['totalwins']; 
    $totalloses = $_POST['totalloses']; 
    $email = $_POST['email']; 
    $country = $_POST['country']; 
    $info = $_POST['info']; 

    // Connect to server and select database. 
    mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
    mysql_select_db("$db_name")or die("cannot select DB"); 

    $queryreg = mysql_query(" 

       INSERT INTO $tbl_name VALUES('','','$myusername','$mypassword''$firstname','$surname','$totalwins','$totalloses','$email','$country','$info','$dob') 
     "); 

if (!mysql_query($sql)) 
     { 
    die('Error: ' . mysql_error()); 
     } 
     else { 
     echo "<br><br>Your details have been successfully updated. Go back to the     personal details page to view your updated information."; 
    } 
+0

我们没有魔法球..这是错误? – dynamic

+2

请停止使用古代mysql_ *函数编写新代码。他们不再被维护,社区已经开始了贬值过程。相反,您应该了解准备好的声明并使用PDO或MySQLi。 (你现在的代码很容易被sql注入) – Bono

+2

请停止使用古老的'mysql_ *'函数编写新代码。他们不再被维护,社区已经开始[弃用流程](http://goo.gl/KJveJ)。相反,您应该了解[准备好的语句](http://goo.gl/vn8zQ)并使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli的)。如果你不能决定,[本文](http://goo.gl/3gqF9)将有助于选择。如果你关心学习,[这里是一个很好的PDO相关教程](http://goo.gl/vFWnC)。 – vascowhite

回答

0

首先,您使用代码公开了SQL注入。请准备并逃脱你的发布数据!这对防止SQL注入攻击非常重要。请仔细阅读。

然后,出现错误,因为这

if (!mysql_query($sql)) 
    { 
die('Error: ' . mysql_error()); 
    } 
    else { 
    echo "<br><br>Your details have been successfully updated. Go back to the     personal details page to view your updated information."; 
} 

你似乎并不有一个变量名为$ SQL,并且,您正在执行两个查询的!

请执行下列操作并发布您的反馈

$sql = "INSERT INTO $tbl_name VALUES('','','$myusername','$mypassword''$firstname','$surname','$totalwins','$totalloses','$email','$country','$info','$dob')"; 

if (!mysql_query($sql)) 
    { 
die('Error: ' . mysql_error()); 
    } 
    else { 
    echo "<br><br>Your details have been successfully updated. Go back to the     personal details page to view your updated information."; 
} 
+0

SQL =的mysql_query(” \t \t \t \t \t \t INSERT INTO $ tbl_name(字段3,字段4,字段5,字段6,字段7,字段8,字段9,字段10,field11,field12,field13)VALUES( '', '',” $ myusername','$ mypassword','$ firstname','$ surname','$ totalwins','$ totalloses','$ email','$ country','$ info','$ dob') \t \t \t“);如果(!mysql_query($ sql)) \t die('Error:'。mysql_error()); } – user1368371

+0

还是一样的错误?对不起,我不熟悉这些评论 – user1368371

+0

与反馈一样,我的意思是脚本产生的错误或结果。 这对我来说帮助不大。不过,如果您使用的是自动递增的主键,则应在您不想存储值的字段上传递一个“空”值。 顺便说一句,你的专栏真的名为“field1,field2等......”?这是一个糟糕的编程习惯。你应该相应地命名你的表列。 无论如何,请发布脚本结果 –

2

如果您使用的主要领域与自动增量应指定字段名:

$queryreg = mysql_query("INSERT INTO $tbl_name (field1,field2,field3 ecc) VALUES(...)"); 

而且你的代码是vulernable注射,USO PDO

0

查询是空的,因为您没有任何赋值到$ sql的任何赋值行

if (!mysql_query($sql)) 

要解决,必须给它喜欢:

$sql = "update $tbl_name set ..."; 
    if (!mysql_query($sql)) 
0

有迹象表明,吓唬我你的代码不少东西...

更改到以下(你有$mypassword$sql WASN后缺少逗号没有设置正确)。

$sql = "INSERT INTO $tbl_name ([list columns here besides autoincrement ]) 
    VALUES 
    ('', '$myusername', '$mypassword', '$firstname', '$surname', 
    '$totalwins', '$totalloses', '$email', '$country', '$info', '$dob')"); 

if (!mysql_query($sql)) { 
+0

无论谁投票这些答案需要提供一些解释。否则很难改善答案。 – kevin628

+0

这现在是我收到的错误 – user1368371

+0

错误:列数不匹配第1行的值计数 – user1368371

相关问题