2017-02-10 2 views
1

Я новичок в программировании, и я столкнулся с проблемой с кодом обновления Mysql. У меня есть 4 разных значения строк в столбце «100 м», и я пытаюсь использовать цикл While для вычисления $ points1 для каждого разного значения строки, затем по расчёту, таблицы обновлений с ним в зависимости от значения строки. Но из всех 4-х строк только 3-й получает обновление Total_score.Обновление Mysql php не работает во время цикла

Таблица:

enter image description here

Структура таблицы:

enter image description here

Код:

<?php 
 

 
include ("config.php"); 
 

 
$sql= "SELECT * FROM data_from_file"; 
 

 
$result= $db->query($sql); 
 

 
if ($result->num_rows > 0) { 
 

 
    while($row = $result->fetch_assoc()){ 
 
     $P=$row['100m']; 
 
     $A=25.4347; 
 
     $B=18; 
 
     $C=1.81; 
 
     $points1 = $A*(($B-$P)**$C); 
 
     $insert =$db->query("UPDATE data_from_file SET Total_score=$points1 WHERE 100m=$P"); 
 
     echo $P; 
 
     echo "<br>"; 
 
     echo $points1; 
 
     echo "<br>"; 
 
     
 
    }; 
 

 
} 
 

 

 
?>

Почему только третий обновляется?

ответ

0

Попробуйте это Используйте одинарные кавычки для переменных

$insert =$db->query("UPDATE `data_from_file` SET `Total_score`='$points1' WHERE `100m`='$P'"); 
1

Вы не должны использовать имена, начинающиеся с цифры на ваших столбцах таблицы.

$insert =$db->query("UPDATE data_from_file SET Total_score=$points1 WHERE `100m`=$P"); 
+0

Я использую оператор экспоненции, поэтому я могу изменить $ points1 = $ A * (($ B- $ P) ** $ C); –

+0

@Lukas Abromas Вы правы. – jetblack

-1

Использование WHERE 100m=$P это плохая идея, потому что он обновляет все строки, где значение 100m равняется $P. Вы должны использовать WHERE id=$row['id'], так что вы будете уверены, что будет обновлена ​​только одна строка.

Можете ли вы опубликовать структуру таблицы? Я хочу знать типы столбцов.

+0

Спасибо! изменение на WHERE id = $ row ['id']. –

Смежные вопросы