@yagyar001
Начинающий back-end и front-end

Не получается отредактировать MySQL. В чем ошибка?

Всем привет. Не получается отредактировать работника. При нажатии на отправить ничего не происходит. Покажите пожалуйста ошибку. Голова уже кругом идет. Я только учусь.
<?php
    error_reporting(E_ALL);
    //Устанавливаем доступы к базе данных:
        $host = 'localhost'; //имя хоста, на локальном компьютере это localhost
        $user = 'root'; //имя пользователя, по умолчанию это root
        $password = ''; //пароль, по умолчанию пустой
        $db_name = 'test'; //имя базы данных

    //Соединяемся с базой данных используя наши доступы:
        $link = mysqli_connect($host, $user, $password, $db_name);

    //Устанавливаем кодировку (не обязательно, но поможет избежать проблем):
        mysqli_query($link, "SET NAMES 'utf8'");

    //Формируем тестовый запрос:
       /*$query = "SELECT * FROM workers WHERE name LIKE '%я'";
*/

    //Делаем запрос к БД, результат запроса пишем в $result:
        /*$result = mysqli_query($link, $query) or die(mysqli_error($link));
        for ($data = []; $row = mysqli_fetch_assoc($result); $data[] = $row);
            var_dump($data);*/
?>
<table>
    <tr>
        <th>id</th>
        <th>имя</th>
        <th>возраст</th>
        <th>зарплата</th>
        <th>Удаление</th>
        <th>Редактирование</th>
    </tr>

<?php 
    if (!empty($_POST)) {
        $addName = $_POST['name'];
        $addAge = $_POST['age'];
        $addSalary = $_POST['salary'];

        $query = "INSERT INTO workers SET name = '$addName', age = '$addAge', salary = '$addSalary'";
        mysqli_query($link, $query) or die(mysqli_error($link));
    }
    if (isset($_GET['del_id'])) {
        $del = $_GET['del_id'];
        $query = "DELETE FROM workers WHERE id = $del";
        mysqli_query($link, $query) or die(mysqli_error($link));
    }
    $query = "SELECT * FROM workers";
    $result = mysqli_query($link, $query) or die(mysqli_error($link));
    for ($data = []; $row = mysqli_fetch_assoc($result); $data[] = $row);
    $res = '';
    foreach ($data as $elem) {
        $res .= "<tr>";

        $res .= "<td>$elem[id]</td>";
        $res .= "<td>$elem[name]</td>";
        $res .= "<td>$elem[age]</td>";
        $res .= "<td>$elem[salary]</td>";
        $res .= "<td><a href=\?del_id=\"$elem[id]\">Удалить</a></td>";
        $res .= "<td><a href=\?edit_id=\"$elem[id]\">Редактировать</a></td>";

        $res .= "</tr>";
    }
    echo $res;
?>
</table>
<p>Добавить работника</p>
<form action="" method="POST">
    <p>Имя</p>
    <input type="text" name="name">
    <p>Возраст</p>
    <input type="text" name="age">
    <p>Зарплата</p>
    <input type="text" name="salary"><br><br>
    <input type="submit">
</form>
<?php 
    if (isset($_GET['edit_id'])) {
        $query = "SELECT * FROM workers WHERE id = $_GET[edit_id]";
        mysqli_query($link, $query) or die(mysqli_error($link));
        $result = mysqli_query($link, $query) or die(mysqli_error($link));
        for ($data = []; $row = mysqli_fetch_assoc($result); $data[] = $row);
        foreach ($data as $edit) {
            echo "<form method= \"GET\">";
            echo "<input type=\"text\" name=\"edit_name\" value=\" $edit[name]\"><br>";
            echo "<input type=\"text\" name=\"edit_age\" value=\" $edit[age]\"><br>";
            echo "<input type=\"text\" name=\"edit_salary\" value=\" $edit[salary]\"><br>";
            echo "<input type=\"submit\"";
            echo "</form>";
        }
        
    } if (isset($_GET['edit_name'])) {
        $editName = $_GET['edit_name'];
        $editAge = $_GET['edit_age'];
        $editSalary = $_GET['edit_salary'];
        $query = "UPDATE workers SET name = '$editName', salary = '$editSalary', age = '$editAge' WHERE id = $_GET[edit_id]";
        mysqli_query($link, $query) or die(mysqli_error($link));
    }
    echo $_GET['edit_name'];
?>

Структура таблицы:
5c2ef1df179b4286706263.png
  • Вопрос задан
  • 86 просмотров
Решения вопроса 2
DevMan
@DevMan Куратор тега PHP
1. почитайте про sql-injections.
2. не получается - это ни о чем. если не получается, значит ошибка. или логическая или в самом запросе (посмотреть ee можно при помощи php.net/manual/ru/mysqli.error.php )
Ответ написан
gobananas
@gobananas
botbot.ru
Кавычек нет у id
WHERE id = $_GET[edit_id]
на
WHERE id = '$_GET[edit_id]'
Все названия таблиц и столбцов в обратные кавычки так:
UPDATE `workers` SET `name` =
Поместите весь запрос в переменную, выведите и вбейте напрямую в mysql, может переменная какая-то пустая:
$query = "UPDATE...';
echo $query;
mysqli_query($link, $query) or die(mysqli_error($link));
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы