ОБНОВЛЕНИЕ ЗАПИСЕЙ С ИСПОЛЬЗОВАНИЕМ PHP LOOP - PullRequest
1 голос
/ 30 мая 2019

Я хочу обновить данные в моей базе данных, используя цикл php.

Я попытался обновить данные, но он обновляет только последнюю запись в моем списке и возвращает все записи как ноль / ноль.

// attempting to update data
$rcount_student_lists = mysqli_query($mysqli, $count_student_lists);
while($row2 = mysqli_fetch_row($rcount_student_lists))
    $student_count_count = $row2['0'];

for ($id = 1; $id <=$student_count_count; $id++)
{  
    $sql = "UPDATE exam_data SET score_s = '".${'dd_'.$id}."' WHERE exam_name_s = '".$one."'";
}

if (mysqli_query($mysqli, $sql)) {
    echo juuhead("DETAILS UPDATED SUCCESFULLY");
} else {
    echo "Error updating record: " . mysqli_error($mysqli);
}

Я бы хотел, чтобы он обновил все записи в столбце score_s

1 Ответ

0 голосов
/ 30 мая 2019

Вы генерируете строку SQL в цикле:

for ($id = 1; $id <=$student_count_count; $id++)
{  
    $sql = ...;
}

Но вы выполняете ее только один раз, потому что это вне цикла:

if (mysqli_query($mysqli, $sql)) {

ПереместитеКоманда запроса внутри цикла:

for ($id = 1; $id <=$student_count_count; $id++)
{  
    $sql = ...
    if (mysqli_query($mysqli, $sql)) {
        ...
    } else {
        ...
    }
}

В вашем цикле while также отсутствуют скобки:

while($row2 = mysqli_fetch_row($rcount_student_lists))
$student_count_count = $row2['0'];

Без фигурных скобок оператор while зацикливает только одну строку, следующую за ним.Чтобы зациклить более одной строки, вам необходимо заключить строки в фигурные скобки:

while($row2 = mysqli_fetch_row($rcount_student_lists))
{
    $student_count_count = $row2['0'];
    for ($id = 1; $id <=$student_count_count; $id++)
    {
        ...
    }
}

Также, пожалуйста, прочитайте о SQL-инъекция .Вместо построения запросов с конкатенацией строк используйте подготовленные операторы с привязанными параметрами .См. эту страницу и этот пост для некоторых хороших примеров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...