PHP MYSQL-запрос не получает данные от $ _POST для обновления

1

Я пытаюсь вызвать и обновить строку таблицы в базе данных с использованием определенных критериев. В настоящее время у меня есть таблица, загружающая данные в текстовые поля и автоматически назначающая НАЗВАНИЯ всех текстовых полей, чтобы я мог использовать их позже для обновления.

Код для отображения

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

mysqli_set_charset($conn,"utf8");
$check=$_POST["scenario1"];
$qwert="SELECT * FROM izprashtane WHERE Сценарий='$check'";
$query=mysqli_query($conn,$qwert);
$sql = "SHOW COLUMNS FROM izprashtane";
$result = mysqli_query($conn,$sql);
echo "<table width=650 border=1>\n";
$counter=0;
while ($get_info = mysqli_fetch_row($query)){
    echo "<tr>\n";
    while($row = mysqli_fetch_array($result)){
        echo "<td>" . $row['Field'] . "</td>";
    }
    echo "</tr>\n";
    echo "<tr>\n";
    $counter=0;
    foreach ($get_info as $field){
        $counter += 1;
        echo "\t<td><input type='text' name='$counter' value='$field'></td>\n";
    }
    echo "</tr>\n";
}
echo "</table>\n";
$conn->close();
?>
<html>
<body>
<form action="datacizprashtane.php" method="POST">
<input type="submit" value="Промяна" >
</form>
</body>
</html>

Это загружает строку таблицы в таблицу с редактируемыми текстовыми полями и присваивает имена от 0 до того, что мне нужно. Затем я получил код для обновления таблицы. Это просто экспериментально, поэтому у меня есть только 2 текстовых поля, и я добавлю остальные, как только это получится.

Код для обновления

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
$sql = "UPDATE izprashtane SET НаселеноМясто='$_POST[2]',Тримесичие='$_POST[3]' WHERE Сценарий='$_POST[6]'";
if (mysqli_query($conn, $sql)) {
    echo "Record updated successfully";
} else {
    echo "Error updating record: " . mysqli_error($conn);
}

$conn->close();

На данный момент это дает мне:

Ошибка обновления записи: у вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с ' аселеноМясто =' ', Тримес' в строке 1.

Я пытался использовать '".$_POST[3]."' Но тогда это даже не дает мне ошибку. Любые идеи о том, что я делаю неправильно?

  • 0
    используйте utf8_encode ()
  • 0
    Установите кодировку перед выполнением этого запроса $conn ->set_charset("utf8")
Показать ещё 4 комментария
Теги:
html-table
mysqli

3 ответа

1
Лучший ответ

Я думаю, ваша проблема в том, что поля <input...> в вашем HTML не находятся в <form.... >.

Если поля не помещаются внутри <form> они не отправляются при нажатии кнопки отправки. На самом деле они даже не внутри страницы <body>

В настоящее время только кнопка отправки находится внутри вашего <form>, поэтому подача выполняется, но данные не передаются, и вы не проверяете, действительно ли они существуют, прежде чем использовать их.

  • 0
    Входные данные будут называться 1,2,3,4,5,6,7,8 ..... это то, что будет в массиве $_POST . Он должен использовать кавычки, такие как $_POST['2'] чтобы получить к ним доступ. Я думаю, что у него были проблемы с двойными кавычками, поэтому он решил опубликовать его без кавычек.
  • 0
    Вы, должно быть, только что обновили это, поскольку я отправил комментарий, все хорошо :)
Показать ещё 1 комментарий
0

вы должны поместить все поля формы между тегами формы (<form>...</form>) ex:

<form action="datacizprashtane.php" method="POST">
<?php
//write your php code here.
?>
<input type="submit" value="Промяна" >
</form>

Я надеюсь, что это поможет вам...

0

Дайте следующие рекомендации:

$sql = "UPDATE izprashtane SET НаселеноМясто=?,Тримесичие=? WHERE Сценарий=?";
$stmt = mysqli_prepare($conn, $sql);
mysqli_bind_param($stmt, "sss", $_POST['2'], $_POST['3'], $_POST['6']);
mysqli_execute($stmt);

Кроме того, ваш код немного беспорядок, обязательно избегайте строк с помощью подготовленных операторов или mysqli_escape_string чтобы избежать SQL-инъекций.

EDIT: Кроме того, добавьте

mysqli_set_charset($conn,"utf8");

После второго подключения к базе данных, а также убедитесь, что ваши входы все в вашей форме.

  • 0
    На самом деле мы оба не правы, так как я только что вспомнил, что пропущенные кавычки при обращении к массиву ассоциаций в такой строке действительно допустимы. Поэтому я удалю свой ответ
  • 0
    Ах понятно. Однако он будет начинать свои имена с 1, а не с 0, поэтому я не уверен, действительно ли он хочет использовать этот метод для доступа к входным значениям. Я отредактирую это и буду ждать его ответа.
Показать ещё 10 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню