gpt4 book ai didi

php - 为什么我的查询会导致 Cardinality violation error PDO/PHP MySQL

转载 作者:行者123 更新时间:2023-11-29 05:32:42 30 4
gpt4 key购买 nike

我正在使用 PDO 生成以下查询:

  INSERT INTO MyTable (ID, Data) 
VALUES (
(:id_0, :data_0), (:id_1, :data_1), (:id_2, :data_2),
(:id_3, :data_3), (:id_4, :data_4), (:id_5, :data_5),
(:id_6, :data_6), (:id_7, :data_7), (:id_8, :data_8),
(:id_9, :data_9)
)

这个查询是在一个循环内生成的,所以我只得到了 print_r($query); 部分并粘贴在这里。

然后在我的 PHP 中我有一个循环来绑定(bind)这样的参数:

   $c = 0;
foreach($data as $key=> $value)
{
$insert->bindValue(":id_{$c}", $key, DB::PARAM_INT);
$insert->bindValue(":data_{$c}", $value, DB::PARAM_STR);
$c++;
}

我收到以下错误:

SQLSTATE[21000]: Cardinality violation: 1241 Operand should contain 1 column(s)

我的表格定义如下所示:

   CREATE TABLE MyTable(
ID INT PRIMARY KEY,
Data TEXT
) ENGINE=MyISAM

谁能帮帮我?

 $data - this just holds key - value pairs where key is integer and value
is serialized array.

最佳答案

VALUES 子句中删除外部 ()。多行 VALUES 子句未包含在 () 中,但每个逗号分隔的行组都包含在 () 中,如 VALUES (1,2,3),(3,2,1),(1,2,3)。通过包含整个行列表,MySQL 一定会将外部 () 误解为结果为第一列的表达式的开头。

VALUES /* no ( here... */
(:id_0, :data_0), (:id_1, :data_1), (:id_2, :data_2),
(:id_3, :data_3), (:id_4, :data_4), (:id_5, :data_5),
(:id_6, :data_6), (:id_7, :data_7), (:id_8, :data_8),
(:id_9, :data_9)
/* no ) here... */

关于php - 为什么我的查询会导致 Cardinality violation error PDO/PHP MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13389766/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com