2010-10-01 194 views
1

尝试从表单向数据库插入数据时出现此错误。我知道这意味着什么,我无法弄清楚为什么我会得到它。也许我已经开始太久而错过了一些东西?Mysql与PHP错误:列计数与第1行的值计数不匹配

这里是我的代码:

<?php 
      $q1 = mysql_escape_string($_POST['q1']); 
      $q2 = mysql_escape_string($_POST['q2']); 
      $q3 = mysql_escape_string($_POST['q3']);    
      $q4 = mysql_escape_string($_POST['q4']); 
      $q5 = mysql_escape_string($_POST['q5']);    
      $q6 = mysql_escape_string($_POST['q6']); 
      $q7 = mysql_escape_string($_POST['q7']); 
      $q8 = mysql_escape_string($_POST['q8']); 
      $q9 = mysql_escape_string($_POST['q9']); 
      $q10 = mysql_escape_string($_POST['q10']); 
      $q11a = mysql_escape_string($_POST['q11a']); 
      $q11b = mysql_escape_string($_POST['q11b']); 
      $q11c = mysql_escape_string($_POST['q11c']); 
      $q11d = mysql_escape_string($_POST['q11d']); 
      $q11e = mysql_escape_string($_POST['q11e']); 
      $q11f = mysql_escape_string($_POST['q11f']); 
      $q11g = mysql_escape_string($_POST['q11g']); 
      $q11h = mysql_escape_string($_POST['q11h']);    
      $q12 = mysql_escape_string($_POST['q12']); 
      $q13 = mysql_escape_string($_POST['q13']); 
      $q14a = mysql_escape_string($_POST['q14a']); 
      $q14b = mysql_escape_string($_POST['q14b']); 
      $name = mysql_escape_string($_POST['name']);    
      $email = mysql_escape_string($_POST['email']); 


      require_once('connection.php'); 

      $sql="INSERT INTO survey (Question1, Question2, Question3, Question4, Question5, Question6, Question7, Question8, Question9, Question10, Question11A, Question11B, Question11C, Question11D, Question11E, Question11F, Question11G, Question11H, Question12, Question13, Question14A, Question14B, name, email) VALUES ('$q1', '$q2', '$q3', '$q4', '$q5', '$q6', '$q7', '$q8', '$q9', '$q10', '$q11a','$q11b', '$q11c','$q11d', '$q11e', '$q11f','$q11g','$q11h','$q12', '$q13', '$q14a', '$q14b' '$name', '$email')"; 

      if (!mysql_query($sql,$conn)) 
       { 
       die('Error: ' . mysql_error()); 
       } 

       mysql_close($conn); 

    ?> 
+0

也许你有ROW1一个主键,包含自动增量? – Tokk 2010-10-01 08:51:16

回答

9

有一个逗号丢失之间:

'$q14b' '$name' 

为什么我们得到这个错误:

考虑一个简单的表temp与类型的2列v1和:

mysql> desc temp; 
+-------+-------------+------+-----+---------+-------+ 
| Field | Type  | Null | Key | Default | Extra | 
+-------+-------------+------+-----+---------+-------+ 
| v1 | varchar(10) | YES |  | NULL |  | 
| v2 | varchar(10) | YES |  | NULL |  | 
+-------+-------------+------+-----+---------+-------+ 
2 rows in set (0.00 sec) 

现在让我们做2个插入:

mysql> insert into temp(v1,v2) values('foo' 'bar'); // missing comma..gives err. 
ERROR 1136 (21S01): Column count doesnt match value count at row 1 

mysql> insert into temp(v1,v2) values('foo' 'bar','faz'); // missing comma..no er 
Query OK, 1 row affected (0.00 sec) 

mysql> select * from temp; // 'foobar' got inserted in v1 !! 
+--------+------+ 
| v1  | v2 | 
+--------+------+ 
| foobar | faz | 
+--------+------+ 
1 row in set (0.00 sec) 

从这些公司很清楚,MySQL的串接之间用空格分离,两个相邻的字符串时,发生这种情况的提供的参数个数在values减少了1,因此其计数与导致此错误的列数不匹配。

+0

现在这是一个详细的答案 – Hammerite 2010-10-01 09:13:52

+1

+ 1研究空间拼接 – 2010-10-01 09:34:28

2

缺少逗号

'$q14b' '$name' 

应该

'$q14b', '$name' 
相关问题