当前位置: 首页 > 面试题库 >

MySQL和PHP错误:列数与第1行的值数不匹配

朱博实
2023-03-14
问题内容

尝试将表单中的数据插入数据库时​​出现此错误。我知道这意味着什么,我只是想不出为什么要得到它。也许我已经开始太久了,错过了什么?

这是我的代码:

<?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);

    ?>

问题答案:

之间缺少逗号:

'$q14b' '$name'

为什么会出现此错误:

考虑一个简单的表temp2列v1v2类型varchar

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,因此其计数与导致错误的列数不匹配。



 类似资料:
  • 问题内容: 我收到此错误: 从以下代码: 错误是什么意思? 问题答案: 您列出了9个字段,但只有8个值。尝试添加方法。

  • 我有一个问题,很高兴收到你的反馈。在MySQL中更新我的表的数据时,出现以下消息: 该表为: INT NOT NULL AUTO_INCREMENT,VARCHAR(50)NOT NULL,日期NOT NULL,日期NOT NULL,INT NOT NULL,VARCHAR(10)NOT NULL,INT NOT NULL,主键 和代码: 和 提前感谢!

  • 问题内容: 我正在尝试在表中插入数据,但是显示以下错误: java.sql.SQLException:列数与第1行的值数不匹配 我已经搜索了此错误,并尝试了所有解决方案,但仍然无法正常工作。这是我的代码: class.html class.jsp 问题答案: 这是您正在运行的查询: 您提到了要传递的4个列值(),但随后传递了5个值(CURDATE()的附加值) 在表中添加该新列,然后更新查询以使其

  • 问题内容: 我正在尝试使用以下查询将ID字段从一个表插入到另一个表: 错误显示: #1136-列数与第1行的值数不匹配 此错误的原因是什么? 问题答案: 您没有在目的地列中定义语句中的值将保存在何处,例如。 可能您想在整个数据库中操作记录。

  • 问题内容: 我新设置了TYPO3,但是当我尝试添加/保存内容时,它给了我这个错误: SQL错误:第1行的“ sys_language_uid”列的“错误整数值:” 问题答案: 该行为与使用严格模式的数据库管理系统有关,例如从版本5.7开始的MySQL。禁用严格模式(如接受的答案中所提供的)只是一种变通方法。 真正的解决方案是通过修改用于相应字段定义的TCA(表配置数组)来将值显式转换为整数。 对于

  • 在我的javaweb应用程序中,我将一些记录插入MySql数据库。我有一个列名“value”,其字段类型为float。当我将以下值76.8653846153846插入到数据库中时,它给出了在第1行为列“value”截断数据的异常。我将字段类型更改为Double,但消息相同。知道吗? 领域描述: