쿼리를 실행하고 아래 코드로 필드 중 하나를 수정하여 루프를 반복합니다. 짧은 시간 동안 수정 된 번호 만 필요하며 데이터베이스로 돌아갈 필요가 없습니다. 이것은 올바르게 작동하고, 에코를 사용하여 예상 값을 출력합니다.mysqli_data_seek를 사용한 데이터 손실
while ($d1 = mysqli_fetch_array($d1_query))
{
echo "Before: " . $d1['d1_name'] . ": " . $d1['d1_earn_rate'] . "<br>";
if ($e1['e_id'] == $h1['e_id'])
$d1['d1_earn_rate'] = $d1['d1_earn_rate'] * 1.2;
echo "After: " . $d1['d1_name'] . ": " . $d1['d1_earn_rate'] . "<br><br>";
}
그런 다음 결과의 하위 집합 합계를 계산하려고합니다. mysqli_data_seek를 사용하여 카운터를 첫 번째 행으로 재설정하므로 루프를 통과 할 수 있습니다. 그러나, 내가 할 때, 그것은 수정 된 것들이 아니라 쿼리의 원래 숫자에 기초하여 합계를 계산합니다.
이전에 msqli_data_seek를 아무런 문제없이 사용했지만이 과정에서 데이터를 다시 루프하기 전에 데이터를 수정 한 것은 이번이 처음입니다. 왜 데이터를 잃어 버리는 지 이해할 수 없습니다.
mysqli_data_seek($d1_query,0);
$counter = 0;
while ($counter < 15)
{
$counter++;
$d1 = mysqli_fetch_array($d1_query);
echo $d1['d1_name'] . ": " . $d1['d1_earn_rate'] . "<br>";
$total_earn_rate += $d1['d1_earn_rate'];
}
이 기능을 사용하지 마십시오. 배열을 대신 배우십시오. –
'$ d1'에 대입하면 질의 결과가 변경되지 않고 단지 행의 복사본으로 변수가 수정됩니다. – Barmar
'$ d1'에 할당하면'$ d1'을 수정 한 다음 다시'$ d1'에 할당합니다. 왜 당신이 mysqli_fetch_array에 의해 반환 된 데이터를 바꾸기를 기대 하는가? – deceze