#php #mysql
#php #mysql
Вопрос:
Я могу получить данные, но кнопка отправки не работает. Меня смущает запрос на обновление и хранение данных в массиве. Вот код для извлечения и отображения данных в таблице.
`<?php
while ($rows=mysqli_fetch_assoc($result)){ ?>
<tr>
<td align="center">
<?php $id[]=$rows['id']; ?><?php echo $rows['id']; ?>
</td>
<td align="center">
<input name="name[]" type="text" id="name" value="<?=$rows['name']; ?>">
</td>
<td align="center">
<input name="lastname[]" type="text" id="lastname" value="<? =$rows['lastname']; ?>">
</td>
<td align="center">
<input name="email[]" type="text" id="email" value="<?=$rows['email']; ?>">
</td>
</tr>
`
Вот код для кнопки отправки
if ($_SERVER["REQUEST_METHOD"] == "POST" amp;amp; $_POST["Submit"] != ""){
$count = mysqli_num_rows($result);
for($i=0;$i<$count;$i ){
$sql2="UPDATE test_mysql SET name='".$_POST["name"][$i]."',lastname='".$_POST["lastname"][$i]."', email='".$_POST["email"][$i]."' WHERE id='$id[$i]'";
$result1=mysqli_query($con, $sql2);
}
header("Location: update-multiple-2.php");
}
Комментарии:
1. моим первым отладочным тестом было бы
echo $sql2;
проверить, правильно ли это выглядит2. Ошибка: неопределенная переменная. Почти уверен, что что-то не так с запросом обновления или хранением данных. Я застрял с запросом на обновление почти на 6 часов. Не удалось выяснить, что не так. Спасибо за вашу помощь. @nogad
3. проверяли ли вы , действительно ли вы попадаете в это состояние ?
4. Постоянно отображаются две ошибки (обратите внимание: использование неопределенной константы sql2 и Обратите внимание: неопределенная переменная: test_mysql ). Да, скрипт попадает внутрь цикла, и цикл for работает нормально. @nogad
Ответ №1:
Если вы обрабатываете POST после вывода формы (для установки переменной $id
), а переменная $test_mysql
устанавливается в существующую таблицу в вашей базе данных, и все столбцы существуют, и вы единственный, кто может добавить или удалить строку (потому что это изменит $id
переменную), тогда это должно сработать.
Возможно, это могло бы помочь:
if(!$result1=mysqli_query($con, $sql2)){
echo 'Error: '.mysqli_error();
}
Вам нужно как-то отладить это:
if ($_SERVER["REQUEST_METHOD"] == "POST" amp;amp; $_POST["Submit"] != ""){
$count = mysqli_num_rows($result);
$error = '';
for($i=0;$i<$count;$i ){
$sql2="UPDATE $test_mysql SET name='".$_POST["name"][$i]."',lastname='".$_POST["lastname"][$i]."', email='".$_POST["email"][$i]."' WHERE id='$id[$i]'";
if(mysqli_query($con, $sql2) === FALSE){
$error .= 'SQL query failed, SQL: '.$sql2.', Error: '.mysqli_error() . "n";
}
}
if(!$error){
header("Location: update-multiple-2.php");
}else{
echo $error;
exit();
}
}
Комментарии:
1. возможно, из-за заголовка местоположения
2. следуйте сообщениям об ошибках, печатайте значение
$count
,$id
,$sql2
чтобы проверить, все ли с ними в порядке (после их установки), переменная$result
должна быть установлена правильно$count
, и если вы перенаправляете страницу, вы не можете увидеть вывод, поэтому прокомментируйте расположение заголовка для отладки