1

複数の挿入を完了する foreach ループがあります。

if ($action == '2'){
    foreach(array_combine($test_results, $reference_intervals) as $test_result => $reference_interval){     
    $query = "INSERT INTO model_lab_test_results (model_lab_test_results_pk, case_fk, level, lab_test_fk, result, reference_interval, created, created_by) VALUES ('', '$case_pk', '$level', '$lab_test_pk', '$test_result', '$reference_interval', NOW(), '$author_pk')";
$result = mysql_query($query, $connection) or die(mysql_error());
$inserted_ids[] = mysql_insert_id();
}

次に、挿入された各レコードを更新する別の foreach ループを実行します。

if($result){
foreach($lab_tests_pk as $lab_test_pk){
$query_update_results = "UPDATE model_lab_test_results SET lab_test_fk = '$lab_test_pk' WHERE model_lab_test_results_pk IN (" . implode(",", $inserted_ids) . ")";
$result_update_results = mysql_query($query_update_results, $connection) or die(mysql_error());
}

問題は、配列 $inserted_ids に挿入された 4 つのレコードのそれぞれです。

Array ( [0] => 153 [1] => 154 [2] => 155 [3] => 156 )

配列 $lab_tests_pk の同じ最後の値、つまり 1776 で更新されます。

Array ( [0] => 2249 [1] => 1349 [2] => 1126 [3] => 1776 ) 

挿入された各レコードを $lab_tests_pk からの個別の値で更新するにはどうすればよいですか?

私はPDOを使用する必要があることを知っています...ありがとう...

4

1 に答える 1

3

キーを使用する必要がある場合もあり$inserted_idsます。あなたの場合、すべてのレコードを各値で上書きするだけです。それぞれの更新のためのすべて。だから最後しか見ない。これを試して:

foreach($lab_tests_pk as $key => $lab_test_pk){
$query_update_results = "UPDATE model_lab_test_results SET lab_test_fk = '{$lab_test_pk}' WHERE model_lab_test_results_pk = {$inserted_ids[$key]}";
$result_update_results = mysql_query($query_update_results, $connection) or die(mysql_error());
}
于 2013-05-23T03:28:25.557 に答える