Я пытаюсь извлечь данные из одной таблицы, сравнить столбцы с переменной, затем, если они совпадают, добавить их и обновить поле в другой таблице. Кажется, что UPDATE работает только один раз внутри цикла while и помещает значение этого времени в каждую строку этого столбца по всей таблице. Странно, когда я повторяю его, все значения являются правильными (уникальными) .. но только когда я эхо … когда я смотрю на таблицу с терминалом, все строки этого столбца идентичны. Я прочитал, что вы не можете использовать 2 запроса за раз … затем снова … Я прочитал, что вы можете, если первый из них выходит за пределы цикла … пожалуйста, помогите …
Я хочу добавить field1 и field2 каждой строки и поместить общее количество в общую строку.
heres код ….
<?php require("connection.php"); mysql_select_db("database", $connection); echo "<br />"; $result = mysql_query("SELECT * FROM table"); while($row = mysql_fetch_array($result)) { $values = ($row['field1'] + $row['field2']); echo "values = " . $values; $sql=mysql_query("UPDATE table SET total_val = '$values'"); echo $row['user_name'] . " " . $values; echo "<br />"; } ?>
Вот, что эхо дает мне
Сьюзан 14
Мэри 18
Боб 13
Сэм 21
heres the database
mysql> SELECT total_val FROM table; +-----------+ | total_val | +-----------+ | 21 | | 21 | | 21 | | 21 | +-----------+
итоговые значения ech – это именно то, что я хочу. Мне просто нужно, чтобы они помещались внутри столбца total_val.
Обновить конкретную (текущую) строку в цикле while
В настоящее время он делает это, когда while достигает цикла в конце итерации, он имеет общее число 21 и обновляет таблицу со значением 21, следовательно, все строки содержат 21.
Ваше обновление Query обновляет все строки при каждом добавлении условия для уникального идентификатора для обновления
$sql=mysql_query("UPDATE table SET total_val = '$values' WHERE id=$row['id']");
Текущий запрос обновляет все строки в базе данных.
Попробуй это:
$sql=mysql_query("UPDATE table SET total_val = '$values' WHERE id=".$row['id']);