gpt4 book ai didi

php - PDO update 只更新一行

转载 作者:行者123 更新时间:2023-12-04 04:47:20 24 4
gpt4 key购买 nike

所以我对这个问题很困惑。我正在向此 PHP 发送一个帖子文件使用 AJAX它需要我的数组,反转它,将它分 block ,然后用它来绑定(bind)值。每个 block 都包含一行要更新的信息,因此 for 循环的每次迭代都会更新一行。

我第一次尝试这个时,我使用了以下代码。

if(isset($_POST['saveEdits'])) {
$i = 0;
$j = 1;
$update = array();
$update = $_POST['saveEdits'];
$chunk_count = count($update)/7;
$backwards = array_reverse($update);
$chunks = array_chunk($backwards, 7);

try {
for($i; $i < $chunk_count; $i++ ) {
$update_project = $db->prepare('
UPDATE projects
SET comments = ?,
contact = ?,
est_end = ?,
est_start = ?,
apm = ?,
pm = ?
WHERE id = ?
');

foreach ($chunks[$i] as $field => $val) {
$update_project->bindValue($j++, $val, PDO::PARAM_STR);
}
$update_project->execute();

}

echo 'Projects Updated';

} catch(PDOException $e) {
die($e->getMessage());
}
} else {
echo 'could not update projects table';
}

我每次都会收到以下错误
Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in C:\xampp\htdocs\core\functions\update_projects.php on line 31

所以有人建议我改变
$i = 0;


$i = 1;

这以某种方式起作用。这让我可以一次性插入数据,但不会插入所有数据。这完全有效的事实让我感到莫名其妙。 $i 是我的循环索引和 block 索引的持有者。它需要从 0 开始 - 无论如何。我不明白从 1 开始有什么帮助。 $j 是参数 binder 的持有者,它应该从 1 开始。

一些额外的信息。如果我 var_dump(chunks[0]) 和 var_dump(chunks[1]) 我看到以下
array(7) { [0]=> string(13) "more comments" [1]=> string(9) "jimmy doe" [2]=> string(6) "1-1-14" [3]=> string(7) "12-1-13" [4]=> string(9) "janey doe" [5]=> string(9) "jonny doe" [6]=> string(2) "17" } 
array(7) { [0]=> string(13) "some comments" [1]=> string(7) "jim doe" [2]=> string(6) "1-1-14" [3]=> string(7) "12-1-13" [4]=> string(8) "jane doe" [5]=> string(7) "jon doe" [6]=> string(2) "16" }

所以复习。 $i = 0我得到了最上面的错误, $i = 1我要插入一行,就结束了。有人可以告诉我这里发生了什么吗?任何帮助表示赞赏

最佳答案

您的代码存在多个问题。但主要问题是您尝试将数组拆分为 block 的方式。假设您的数组中有 10 个项目,给定您的代码 $chunk_count = count($update)/7; ,这将使我们的 block 计数为 1.4285...,大于 1,但小于 2。然后在您的循环中,我希望它只运行一次,如果 $i = 1;因为第一次通过循环,1 < 1.x,但第二次 2 > 1.x。

你想通过分解这个数组来完成什么?直接处理就行了。记住尽可能保持简单。

关于php - PDO update 只更新一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17985010/

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