Задать вопрос
@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/
  • Вопрос задан
  • 139 просмотров
Подписаться 1 Средний 3 комментария
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 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 изначально?
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽