Где здесь ошибка?
Хочу чтобы можно было изменить информацию об админе но скрипт не работает
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"); ?> |
<?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> ... |
... <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/
Дополнительно:
скрипт не работает
Это не объяснение проблемы.
Ответы:
Палим учетные данные окружения сервера.
$conn = new mysqli("localhost", "y96360rs_a", "xR&O&&37", "y96360rs_a"); |
$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); |
$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 изначально?
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для того чтобы найти ошибку в коде, необходимо просмотреть его внимательно и выявить возможные проблемы. Возможно, ошибка связана с синтаксическими ошибками, неправильным использованием функций или переменных, или неверным логическим выводом.
Прежде всего, убедитесь, что все открывающие и закрывающие теги правильно расставлены. Проверьте правильность написания функций, переменных и операторов. Также обратите внимание на правильность использования кавычек и точек с запятыми.
Используйте отладочные инструменты, такие как вывод переменных на экран или использование функции var_dump() для вывода содержимого переменных и массивов. Это поможет вам увидеть, что именно происходит в процессе выполнения кода.
Если у вас есть конкретный блок кода, с которым возникают проблемы, покажите его здесь, чтобы мы могли вам помочь и найти ошибку в нем. Не забывайте оформлять код с помощью тега