Не работает перебор значения в циклах for
, foreach
.
Конкретнее после удаления строки из таблицы, обновить столбец с id
. Т.е. например мы имеем таблицу где в ней есть столбец id
со значениями 1, 2, 3 ...
послед удаления строки например 2
столбец с id
принимает значения 1, 3...
. Мне нужно осуществить обновление столбца id
в соответствии количество строк, что бы стало id: 1, 2 ...
.
Логика такая удалить значение с бд и после обновить столбец с ID
.
$delete = mysql_query("DELETE FROM test WHERE id='".$_GET['id']."'");
$id = mysql_query("SELECT id FROM test");
while($idCheck[] = mysql_fetch_assoc($id)) {
#echo $idCheck["id"]."\n";
}
echo count($idCheck);
for($i = 0; $i < count($idCheck); $i++) {
mysql_query("UPDATE test SET id=".$i);
}
получил массив со значениями в поле id
он соответствует бд. Но в переборе в цикле значений в обновление бд вписывает общее значение строк после удаления . Т.е вместо 1, 2, 3 ...
записывает 2, 2, 2...
Другой вариант тоже не работает - тут стоит включить отображение ошибок на экран, потому что исходя из "конструкции"
foreach ($idCheck as $key => $value) {
mysql_query("UPDATE test WHERE id='".$value[$key]."'");
}
вряд-ли существует индекс $value[$key]
вообще
$delete = mysql_query("DELETE FROM test WHERE id=".$_GET['id']);
$id = mysql_query("SELECT id FROM test");
$rows = mysql_num_rows($id);
$fields = mysql_num_fields($id);
for($i = 0; $i < $rows; $i++) {
mysql_query("UPDATE test WHERE id = ".$i);
}
Если не брать во внимание в целом использование get-запроса для измеения данных, использование устаревшего расширения для работы с БД, отсутствие какой-либо проверки на валидность данных и защиты от инъекций, и самое главное непонятность, зачем это все надо, то задачу надо решать не через циклы на стороне пхп.
у вас есть цепочка идентификаторов 1 2 3 4 5. Вы удаляете 3, получаете 1 2 4 5. Далее вместо циклов по перебору нужно выполнить только один запрос на апдейт записей 4 и 5 уменьшив их на 1.
$id = $_GET['id'];
mysql_query("delete from test where id = $id");
mysql_query("update test set id = id - 1 where id > $id") ;
в своих попытках решения UPDATE test SET id=$i
у вас нет условия where
, так что вы данным значением обновляете всю таблицу целиком. вот и остаются значения только последней итерации цикла.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Как через PHP сравнить текст и ответ от сервера и вывести указанное значение? Нужно, чтобы сервер сравнил переменную с отображаемым Пользуюсь...
В процессе написания простой программы-рисовалки возникла проблема с работой под мое устройствоЭкран 2960х1440, но при использовании данной...
Начал учить JavaПоявился вопрос как реализовать проверку вводимых данных в консоль