Отображение и обновление данных MYSQL через HTML-форму через PHP - PullRequest
0 голосов
/ 03 января 2019


Я пытаюсь выяснить, как отобразить все строки таблицы базы данных на одной странице, все значения, которые нужно редактировать, и чтобы в конце была одна кнопка отправки.Я получил половину уравнения, но по какой-то причине оно все еще не работает.
В настоящее время у меня есть таблица, отображающая все содержимое таблицы MYSQL, и все поля доступны для редактирования.Для каждого поля есть кнопка «Отправить» (это не то, что я хочу, но хочу выполнить расчеты, если придется), но после редактирования чего-либо из полей базы данных, я перехожу на страницу, которая выдает синтаксическую ошибку:
"Ошибка обновления записи: у вас есть ошибка в вашем синтаксисе SQL; проверьте правильность синтаксиса в руководстве, соответствующем вашей версии сервера MySQL, для использования рядом с 'WHERE idnum =' 0000 '' в строке 1"

Следующее от FORM.PHP

<?php
include('config.php');
$result = mysqli_query($connect,"SELECT * FROM table123");
?>
<html>
<table>
<?php while ($res = mysqli_fetch_array($result)) { ?>
<tr>
        <form action="test.php" method="post">
            <td><input type="text" name="ret" value="<?php echo $res['ret']; ?>"></td>
            <td><input type="text" name="code" value="<?php echo $res['code']; ?>"></td>
            <td><input type="text" name="status" value="<?php echo $res['status']; ?>"></td>
            <td><input type="hidden" name="idnum" value="<?php echo $res['idnum']; ?>"></td>
            <td><input type="submit" name="update" value="Submit"></td>
        </form>
    </tr>
    <?php } ?>
</table>
</html>

Следующее от TEST.PHP

$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database";
$connect = mysqli_connect($servername, $username, $password, $dbname);
if (!$connect) {
die("Connection failed: " . mysqli_connect_error());
}
if (isset($_POST['update'])) {
$sql = "UPDATE ssoretailerlist SET ret = '$_POST[ret]', code = '$_POST[code]', status = '$_POST[status]', WHERE idnum = '$_POST[idnum]'";
} else {
echo "Nothing was posted";
}
if (mysqli_query($connect, $sql)) {
echo "Record updated successfully";
} else {
echo "Error updating record: " . mysqli_error($connect);
}
mysqli_close($connect);

1 Ответ

0 голосов
/ 03 января 2019

Синтаксическая ошибка из-за лишней запятой. Уберите запятую перед WHERE и с вами все будет в порядке.

$sql = "UPDATE ssoretailerlist
        SET ret = '$_POST[ret]', code = '$_POST[code]', status = '$_POST[status]'
        WHERE idnum = '$_POST[idnum]'";

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

<?php
include('config.php');
$result = mysqli_query($connect, "SELECT * FROM table123");
?>
<html>
<table>
<form action="test.php" method="post">
<?php while ($res = mysqli_fetch_array($result)) { ?>
    <tr>
    <td><input type="text" name="ret" value="<?php echo $res['ret']; ?>"/></td>
    <td><input type="text" name="code" value="<?php echo $res['code']; ?>"/></td>
    <td><input type="text" name="status" value="<?php echo $res['status']; ?>"/></td>
    <td><input type="hidden" name="idnum" value="<?php echo $res['idnum']; ?>"/></td>
    </tr>
<?php } ?>
</table>
<input type="submit" name="update" value="Submit"/>
</form>
</html>

Вы можете также обработать вывод, который вы вставляете в форму. Если данные содержат двойные кавычки, это может нарушить ваш HTML. Проверьте htmlspecialchars () . Судя по заголовкам ваших колонок, я не думаю, что это будет полезно, но всегда полезно помнить.

Однако каждая строка имеет одинаковые входные имена . Это проблема. Как он узнает, какой ret, code, status или idnum выбрать и связать вместе? Сначала вы хотите превратить имена в массивы . Затем вы хотите пройтись по массиву idnum и выполнить несколько запросов UPDATE, обращаясь к одному и тому же ключу в других массивах. Напишите новый вопрос, если вы застряли, работая над этим.

И, наконец, ваш файл config.php очень необходим . Вы можете прочитать эту ветку о require_once () против include () . Хорошо генерировать ошибку и обрабатывать ее в случае сбоя включения вместо продолжения обработки остальной части сценария.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...