mysql 参数计数不匹配_Mysql和PHP错误:列计数与第1行的值计数不匹配

尝试将表单中的数据插入数据库时​​,我收到此错误.我知道这意味着什么,我只是想不通为什么我会得到它.也许我已经开始了很长时间并错过了一些东西?

这是我的代码:

$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'

为什么我们会收到此错误:

考虑一个简单的表temp,其中包含2列v1和varchar类型的v2:

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连接两个由空格分隔的相邻字符串,当发生这种情况时,您在值之后提供的参数数量减少1,因此其计数与导致此错误的列数不匹配.

标签:php,mysql

来源: https://codeday.me/bug/20190928/1826084.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值