【问题标题】:PHP-ERROR: Column count doesn't match value count at row 1PHP-ERROR:列数与第 1 行的值数不匹配
【发布时间】:2019-10-28 08:28:55
【问题描述】:

我在 mysql 数据库中插入值,但我一次又一次地收到相同的错误。我还查看了stackoverflow,但这些问题都没有解决我的查询。我还用数据库列重新检查了我的查询值。所有值都映射到数据库中对应的列:

这里是插入的 PHP 代码:

"INSERT INTO posts VALUES('','$title', '$category', '$tags' '$details', '$added_by', '$user_to', '$date_added', 'no', ‘不’, 0)”

数据库字段如下:

id、标题、类别、标签、详细信息、added_by、user_to、date_added、user_closed、deleted、like

我尝试通过 Internet 和 stackoverflow 寻找解决方案,但每个解决方案都提到数据库或插入查询中的列数不匹配。但是我的代码中没有发现这个错误。

$query = mysqli_query($this->con, "INSERT INTO posts VALUES('','$title', '$category', '$tags' '$details', '$added_by', '$user_to', '$date_added', 'no', 'no', 0)");

我希望值输入数据库,但它们没有输入,我面临错误“列数与第 1 行的值计数不匹配”

【问题讨论】:

  • 您对 SQL 注入持开放态度。由于您使用的是 mysqli,因此请利用 prepared statementsbind_param这将解决可能发生的任何令人讨厌的引用问题。例如,任何文本字段中的多个单引号都会破坏您的查询。
  • 是否也尝试过传递列名?
  • @aynber 我不认为这个问题
  • @aynber 是 100% 正确的。但是,您的问题是您没有指定要输入数据的列。问题是您的 id 列没有被使用。所以有 11 列,只有 10 个值。
  • 需要使用列名插入结构。

标签: php mysqli sql-insert


【解决方案1】:

在插入时使用此结构:

$strQuery = "INSERT INTO posts (id, title, category, tags, details, added_by, user_to, date_added, user_closed, deleted, likes) VALUES('','$title', '$category', '$tags' '$details', '$added_by', '$user_to', '$date_added', 'no', 'no', 0)";

$query = mysqli_query($this->con, $strQuery);

如果 ID 是自动增量键,您可以在没有它的情况下进行插入...像这样(10 列和值):

$strQuery = "INSERT INTO posts (title, category, tags, details, added_by, user_to, date_added, user_closed, deleted, likes) VALUES('$title', '$category', '$tags' '$details', '$added_by', '$user_to', '$date_added', 'no', 'no', 0)";

$query = mysqli_query($this->con, $strQuery);

【讨论】:

    猜你喜欢
    • 2017-06-21
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 2022-12-09
    • 1970-01-01
    • 1970-01-01
    • 2013-08-24
    相关资源
    最近更新 更多