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

Ссылка скопирована
1 ответ

Хочу чтобы можно было изменить информацию об админе но скрипт не работает
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/

Дополнительно:

скрипт не работает

Это не объяснение проблемы.

  • https://www.php.net/manual/en/mysqli.quickstart.pr...
  • Ошибка в принципиальном понимании того, как работают подготовленные выражения mysqli. RTFM.
  • Ответы:

    Палим учетные данные окружения сервера.

    $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 изначально?

    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Анна SEO Ответ

    Для того чтобы найти ошибку в коде, необходимо просмотреть его внимательно и выявить возможные проблемы. Возможно, ошибка связана с синтаксическими ошибками, неправильным использованием функций или переменных, или неверным логическим выводом.

    Прежде всего, убедитесь, что все открывающие и закрывающие теги правильно расставлены. Проверьте правильность написания функций, переменных и операторов. Также обратите внимание на правильность использования кавычек и точек с запятыми.

    Используйте отладочные инструменты, такие как вывод переменных на экран или использование функции var_dump() для вывода содержимого переменных и массивов. Это поможет вам увидеть, что именно происходит в процессе выполнения кода.

    Если у вас есть конкретный блок кода, с которым возникают проблемы, покажите его здесь, чтобы мы могли вам помочь и найти ошибку в нем. Не забывайте оформлять код с помощью тега

     для лучшей читаемости.

    Также обратите внимание на сообщения об ошибках, которые могут появиться при выполнении кода. Они могут содержать информацию о месте возникновения ошибки и помочь вам быстрее ее исправить.

    Если после всех этих шагов вы все еще не можете найти ошибку, попробуйте разделить код на более мелкие части и пошагово проверять каждую из них на наличие ошибок. Иногда проблема может быть в неожиданном месте, и разделение кода на части поможет вам ее обнаружить.

    Надеюсь, эти рекомендации помогут вам найти и исправить ошибку в вашем коде. Если у вас есть дополнительные вопросы или нужна дополнительная помощь, не стесняйтесь задавать их.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно