@kolykisel

Как сделать редактирование БД через PHP?

Здравствуйте, написал код, он выдает ошибку вида (Ошибка:Unknown column 'Николай' in 'field list'), выводим полностью базу данных в таблицу (выводиться), хочу что бы еще можно было редактировать базу данных и по кнопке "Сохранить" сохранялось обратно в БД.
Вот мой код, подскажите в чем ошибка?
<?php
    session_start();
    $servername = "localhost";
    $username = "valeragol_bd";
    $password = "password";
    $dbname = "valeragol_bd";
     
    $conn = mysqli_connect($servername, $username, $password, $dbname);
     
    // =======
     
    if(!empty($_POST)) {
     
        $query = "INSERT INTO `users` (id,first_name,last_name,login) VALUES";
     
        for($i = 0, $len = count($_POST['id']); $i < $len; $i++) {
     
            $query .= ($i > 0 ? ',' : ' ').
                "({$_POST['id'][$i]},{$_POST['first_name'][$i]},{$_POST['last_name'][$i]},{$_POST['login'][$i]})";
        }
     
        $query .= " ON DUPLICATE KEY UPDATE first_name = VALUES(first_name), last_name = VALUES(last_name), login = VALUES(login)";
     
        if(!mysqli_query($conn, $query)) echo "Ошибка:".mysqli_error($conn);
    }
     
    // =======
     
    $sql = "SELECT * FROM `users`";
    $result = mysqli_query($conn, $sql);
?>
<form class="form-admin" method="POST">
                    <div class="admin-content">
                        <div class="table-sql">
                            <table border="1">
                                <thead>
                                    <tr>
                                        <td>id</td>
                                        <td>first_name</td>
                                        <td>last_name</td>
                                        <td>login</td>
                                    </tr>
                                </thead>
                                <tbody>
                                    <?php while($row = mysqli_fetch_assoc($result)) { ?>
                                        <tr>
                                            <td aria-label="id"><input name="id[]" readonly type="text" value="<?php echo $row["id"] ?>"></td>
                                            <td aria-label="first_name"><div class="input-edit"></div><input name="first_name[]" readonly type="text" value="<?php echo $row["first_name"] ?>"></td>
                                            <td aria-label="last_name"><div class="input-edit"></div><input name="last_name[]" readonly type="text" value="<?php echo $row["last_name"] ?>"></td>
                                            <td aria-label="login"><div class="input-edit"></div><input name="login[]" readonly type="text" value="<?php echo $row["login"] ?>"></td>
                                        </tr>
                                    <?php } ?>
                                </tbody>
                            </table>
                        </div>
                    </div>
                    <div class="admin-button-wrapper"><button name="button_save" class="button button-primary admin-button">Сохранить</button></div>
                </form>
  • Вопрос задан
  • 400 просмотров
Решения вопроса 1
@Artur-Salo
текстовые значения должны быть обрамлены апострофами, например: ... VALUES (142,'Николай','Киселёв','erwrerew') ...
В приведенном коде $query формируется без апострофов, что вызывает ошибку на стороне БД:
... VALUES (142,Николай,Киселёв,erwrerew) ...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы