на странице есть несколько полей формы с одинаковым именем name='protectMean[]'. UPDATE срабатывает только если в самом последнем поле формы я меняю значение. и то ..в таком случае новое значение дублируется во всех полях таблицы БД где personSurname = $order_surname Помогите пожалуйста, я плохо разбираюсь в php. мне нужно чтобы значения в таблице БД обновлялись относительно новых введенных значений в форме. Код (Text): $n=sizeof($_POST['protectMean']); for($i=0;$i<$n;$i++) { $qty=$_POST['protectMean'][$i]; $update= $GLOBALS['pdo']->prepare ("UPDATE protect_means SET nameOfMeans = :value1 WHERE personSurname = :order_surname"); $update->bindParam(':value1', $qty); $update->bindParam(':order_surname', $order_surname); $update->execute(); } [code]
изменяю данные в форме. жму сохранить данные формы отправляются и поочередно заменяются в соответствующих столбцах таблицы
ну логично ж тогда чтоб соответствие было у вас форме, иначе php никак не сможет узнать этого именуйте поля например как protectMean[2], protectMean[55] - где 2,55 итд - id соотв. элементу (это называется массивы) при приеме в php - у вас будет соответствие ключи => значение то есть так-же массив, а вот его спокойно обновляйте PHP: $index = array_keys($_POST['protectMean']; foreach ($index AS $item) { $qty=$_POST['protectMean'][$item]; $update= $GLOBALS['pdo']->prepare ("UPDATE protect_means SET nameOfMeans = :value1 WHERE id = :id"); $update->bindParam(':value1', $qty); $update->bindParam(':order_surname', $item); $update->execute(); }
INSERT INTO `%s` ( `symbol`, `name`, `percent` ) VALUES ( ?,?, 100 ) on duplicate key update `symbol` = values( `symbol` ), `name` = values( `name` ), `percent` = values( `percent` )--- Добавлено --- @ADSoft, зачем припарировать в каждом цикле серверную часть запроса, когда подготовленные запросы могут принимать последующие онли значения ?