그래서이 문제로 인해 혼란 스럽습니다. 나는 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';
}
와 나는 내가이 어떻게 든 작동
$i = 0;
$i = 1;
에 변경하는 것이 다음과 같은 오류를
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에서 무엇이든 갈 필요가 있습니다. 나는 어떻게 1에서 시작하는 것이 어떤 식 으로든 도움이되는지 이해하지 못합니다. $ j는 param 바인더 홀더입니다.
은부터 시작해야합니다.
일부 추가 정보. 내가 위해서 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
나는 내 자신의 질문에 대답 한 후에 설명이없는 투표를 얻는 것을 좋아한다. –
param이 정의되지 않았습니다. 너는 무엇을 더 필요로 하는가? –