@stasbombit

Где здесь ошибка?

Хочу чтобы можно было изменить информацию об админе но скрипт не работает
php
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$conn = new mysqli("localhost", "y96360rs_a", "xR&O&&37", "y96360rs_a");

$id = $_POST["id"];
$name = $_POST["name"];
$login = $_POST["login"];
$pass = $_POST["password"];
$role = $_POST["role"];

$sql = "UPDATE `admins` SET `id` = $id, `login` = '$login', `pass` = '$pass', `name` = '$name', `role` = '$role' WHERE `admins`.`id` = $id";
$stmt = $conn->prepare($sql);
$stmt->bind_param($id, $login, $pass, $name, $role);
$stmt->execute();

$id = $conn->insert_id;
header("Location: about.php?id=$id");

?>

код формы
...
<form action="editadmin.php" method="get" id="rendered-form">
    <div class="rendered-form">
        <label for="id" class="formbuilder-number-label">id</label>
        <input type="number" class="form-control" name="id" value="<? echo $userid ?>" id="id">
        <div class="formbuilder-text form-group field-login">
            <label for="login" class="formbuilder-text-label">
                Имя пользователя
                <span class="formbuilder-required">*</span>
            </label>
            <input type="text" name="login" value="<? echo $login ?>" id="login" required="required" aria-required="true">
        </div>
        <div class="formbuilder-text form-group field-pass">
            <label for="pass" class="formbuilder-text-label">
                Пароль
                <span class="formbuilder-required">*</span>
            </label>
            <input type="password" class="form-control" name="pass" value="<?echo $pass?>" id="pass" required="required" aria-required="true">
        </div>
        <div class="formbuilder-text form-group field-text-1690535851941-0">
            <label for="name" class="formbuilder-text-label">
                Имя
                <span class="formbuilder-required">*</span>
            </label>
            <input type="text" class="form-control" name="name" value="<?echo $username?>" id="text-1690535851941-0" required="required" aria-required="true">
        </div>
        <div class="formbuilder-select form-group field-role">
            <label for="role" class="formbuilder-select-label">
                Уровень прав
                <span class="formbuilder-required">*</span>
            </label>
            <select name="role" id="role" required="required" aria-required="true">
                <option value="editor" selected="selected" id="role-0">Редактор</option>
                <option value="admin" id="role-1">Администратор</option>
                <option value="owner" id="role-2">Создатель</option>
            </select>
        </div>
        <div class="formbuilder-button form-group field-button-1690536180869-0">
            <button type="submit" class="btn-default btn" name="" style="default" id="button-1690536180869-0">
                Готово
            </button>
        </div>
    </div>
</form>
...

Знаю что форма в одну строку это плохо но я использовал https://formbuilder.online/
  • Вопрос задан
  • 135 просмотров
Пригласить эксперта
Ответы на вопрос 1
@alexalexes
Палим учетные данные окружения сервера.
$conn = new mysqli("localhost", "y96360rs_a", "xR&O&&37", "y96360rs_a");

То, что вы в вопросе показали пример запроса с параметрами - он выполнен с помощью склейки строк - так делать нельзя. Подготовленные запросы пишутся так:
$sql = "UPDATE `admins` SET `login` = ?, `pass` = ?, `name` = ?, `role` = ? WHERE `id` = ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param('ssssi', $login, $pass, $name, $role, $id);

Почувствуйте разницу.
$id = $conn->insert_id;
Зачем оно после запроса обновления, вы же знаете id изначально?
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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