尝试使用 PHP 向 MySQL 数据库插入数据时,可能会遇到错误:
Column count doesn't match value count at row 1
当您尝试插入表中的值的数量与该表中定义的列数不匹配时,就会发生此错误
了解错误
在您的具体情况下,错误很可能是由提供的代码中显示的查询引起的:
$query = sprintf("INSERT INTO dbname (id, Name, Description, shortDescription, Ingredients, Method, Length, dateAdded, Username) VALUES ('', '%s', '%s', '%s', '%s', '%s', '%s', '%s')", mysql_real_escape_string($name), mysql_real_escape_string($description), mysql_real_escape_string($shortDescription), mysql_real_escape_string($ingredients), mysql_real_escape_string($method), mysql_real_escape_string($length), mysql_real_escape_string($dateAdded), mysql_real_escape_string($username));
解决错误
要解决错误,您需要检查代码和数据库定义以识别缺失值。在本例中,您似乎已在 INSERT 中声明了 9 列语句:
但是,插入的值仅占 8 个值(因为图像列不包含在列表中)。
解决方案
要修复错误,您可以添加方法列的缺失值或修改数据库定义以匹配您要插入的值的数量。如果您选择第一个选项,请按如下方式更新查询:
$query = sprintf("INSERT INTO dbname (id, Name, Description, shortDescription, Ingredients, Method, Length, dateAdded, Username) VALUES ('', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')", mysql_real_escape_string($name), mysql_real_escape_string($description), mysql_real_escape_string($shortDescription), mysql_real_escape_string($ingredients), mysql_real_escape_string($method), mysql_real_escape_string($length), mysql_real_escape_string($dateAdded), mysql_real_escape_string($username));
以上是为什么我的 PHP MySQL INSERT 查询中出现'列计数与值计数不匹配”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!