所以我很困惑這個問題。我使用AJAX
發送了一個帖子到PHP
文件,並且它使用我的數組,將它反轉,將它塊化,然後使用它來綁定值。每個塊都有一行值得更新的信息,因此for循環的每次迭代都會更新一行。PDO更新只更新一行
我第一次嘗試這個,我用下面的代碼。
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是我的循環索引和塊索引的持有者。它需要從0開始 - 不管。我不明白如何從1開始有任何幫助。 $ j是參數綁定的持有者,其中應該從開始於1.
一些附加信息。如果我的var_dump(塊[0])和後續代碼var_dump(塊[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
我得到插入一行,它結束了。有人能告訴我這裏發生了什麼事嗎?任何幫助表示讚賞
可以粘貼完整的代碼? HTML? – Konsole
我喜歡這個,我在回答我自己的問題後得到了一個沒有解釋的投票。 –
參數未定義。你還需要什麼? –