2013-03-18 45 views
0

大家好我试图使用HTML表单,它给我的列数错误的行不匹配值计数插入一些值到数据库1我不明白,IA新PHP PLZ谁能帮助我? 问候PHP的登记表

PHP代码

<? 
if(isset($_POST['submit'])){ 

     $userName = $_POST["userName"]; 
     $FirstName =$_POST["FirstName"]; 
     $LastName =$_POST["LastName"]; 
    $stnumber = $_Post["ID"]; 
    $class = $_POST["class"]; 
    $subject = $_POST["subject"]; 
    $grade = $_POST["grade"]; 
    $password = $_POST["password"]; 

} else{ 

    echo("wronggggggg nameeeeeeeeeeeee"); 
} 


$stnumber = mysql_escape_string ("ID"); 
$userName = mysql_escape_string ("userName"); 
$password = mysql_escape_string ("password"); 
$FirstName = mysql_escape_string ("FirstName"); 
$LastName = mysql_escape_string ("LastName"); 
$class = mysql_escape_string ("class"); 
$subject = mysql_escape_string ("subject"); 
$grade = mysql_escape_string ("grade"); 







mysql_query ("INSERT INTO LOGIN 
VALUES ('$stnumber','$userName','$password','$FirstName','$LastName','$stnumber','$class','$subject','$grade')") or die(mysql_error()); 





$sql = mysql_query("SELECT * FROM LOGIN WHERE userName ='$userName'"); 
//$row = mysql_query($sqlUser); 
//$result = mysql_query($sql, $connection); 

if(mysql_num_rows ($sql)> 0){ 
    echo ("Upload sucessful"); 
    } else 
{ 
    echo("Upload fail"); 

} 
+0

确保绝对没有错别字。将代码中的内容与数据库进行比较,并确保从拼写到大写都是正确的。这是很好的做法! – 2013-03-18 19:31:43

+0

LOGIN有多于或少于9列 – 2013-03-18 19:32:08

+3

[**请不要在新代码**中使用'mysql_ *'函数](http://bit.ly/phpmsql)。他们不再被维护[并且被正式弃用](http://j.mp/XqV7Lp)。看到[**红框**](http://j.mp/Te9zIL)?学习[*准备的语句*](http://j.mp/T9hLWi),并使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [这篇文章](http://j.mp/QEx8IB)将帮助你决定哪个。如果你选择PDO,[这里是一个很好的教程](http:// j。熔点/ PoWehJ)。除此之外,'mysql_escape_string'总是**错误。你需要'mysql_real_escape_string'来代替。 – ThiefMaster 2013-03-18 19:32:41

回答

0

检查多少列在你的表。它应该是您插入的人数的确切数字,即9(减去任何自动增量)。

0

您必须指定要用于INSERT的字段,或者将数据正确地插入到所有字段中。

我建议你尝试编辑您的查询如下(我已经相当假定您的字段的名称):

INSERT INTO `LOGIN` 
(`stnumber`, `username`, `password`, `forename`, `surname`, `stnumber`, `class`, `subject`, `grade`) 
VALUES 
('$stnumber','$userName','$password','$FirstName','$LastName','$stnumber','$class','$subject','$grade') 

值得然而提的是,您使用的是过时的功能集。您应该调查使用MySQLiPDO以获得更好的性能和更长的使用寿命。

0

在这一行:

mysql_query ("INSERT INTO LOGIN 
VALUES ('$stnumber','$userName','$password','$FirstName','$LastName','$stnumber','$class','$subject','$grade')") or die(mysql_error()); 

您使用$stnumber两次,我不知道这是否是有意的,但我猜这可能添加了不应该出现的额外的价值。

0

我觉得最好在INSERT语句中包含列名以明确定义哪些值被插入到哪个列中。例如:

INSERT INTO `table` (`column_1`, `column_2`) 
VALUES ('value_1', 'value_2'); 

您也可以考虑审查PHP PDO,因为它是mysql_query调用,从而为V5.5.0的,将被弃用,一个更安全的替代方案。

如果您提供了表结构,我们可能能够准确识别INSERT语句中哪些列缺失/额外。

2

试试这个代码

$ insert_qry =请求mysql_query( “INSERT INTO LOGINIDuserNamepasswordFirstNameLastNameclasssubjectgrade)VALUES('”。$ stnumber“。”, ' “$用户名。”', ' “$密码”', ' “$名字。”', ' “$姓氏。”' ' “$类。”''”。$主题。“','”。$ grade。“')”)或者死(mysql_error());