Страница обновления профиля пользователя: не удается обновить информацию о пользователе в базе данных

Я понятия не имею, почему это не работает вот back end php:

include_once 'dbh-inc.php';

if (isset($_POST['edit'])) {

    $first = mysqli_real_escape_string( $conn , $_POST['first']);
    $last = mysqli_real_escape_string( $conn , $_POST['last']);
    $uid = mysqli_real_escape_string( $conn , $_POST['uid']);
    $city = mysqli_real_escape_string( $conn , $_POST['city']);
    $region = mysqli_real_escape_string( $conn , $_POST['region']);
    $country = mysqli_real_escape_string( $conn , $_POST['country']);
    $id = $_SESSION['u_id'];



     mysqli_query($conn, "UPDATE users SET user_first = '$first', user_last = 
    '$last', user_uid = '$uid', user_city = '$city', user_region = '$region', 
     user_country = '$country' WHERE user_id = $id");



    }

   header("Location: ../my-profile-edit.php");


     ?>

когда я помещаю: mysqli_error () под запрос, он говорит, что $ id не определен, что вне меня, потому что эта переменная работает на всех других страницах для получения идентификатора текущего сеанса пользователя. это доказательство кода на странице входа:

$_SESSION['u_id'] =$row['user_id'];

вот HTML-код для страницы профиля обновления:

<?php include_once 'Header.php'; 

$uid = ucfirst($_SESSION['u_uid']);

//THIS CODE ONLY EDITS THE VISIBLE PORTION OF A USERS PROFILE//
?>


<form class = "edit-profile" action = "includes/edit-profile-inc.php" 
method = "POST">
<table width = "398" border = "0" align = "center" cellpadding = "0">
  <tr>
     <td width = "82" valign = "top"><div align = "left"> <?php echo $uid ?> </div> 
</td>
    <td height = "26" colspan = "2"><input type = "text" name = "uid" 
placeholder = "New Username"></td>
    <td><div align = "right"><a href = "index.php">logout</a></div></td>
  </tr>
 <tr>
    <td width = "129" rowspan = "5"><img src = "<?php echo $picture ?>" width = "129" 
height = "129" alt = "no image found"/></td>
    <td width = "82" valign = "top"><div align = "left">FirstName:</div></td>
    <td width = "165" valign = "top"><input type = "text" name = "first" 
placeholder = "New First name"></td>
  </tr>

  <tr>
    <td valign = "top"><div align = "left">LastName:</div></td>
    <td valign = "top"><input type = "text" name = "last" placeholder = "New Last 
Name"></td>
  </tr>

<tr>
  <tr>
    <td valign = "top"><div align = "left">City:</div></td>
     <td valign = "top"><input type = "text" name = "city" placeholder = "New City"> 
 </td>
  </tr>

  <tr>
 <tr>
    <td valign = "top"><div align = "left">Region: </div></td>
    <td valign = "top"><input type = "text" name = "region" placeholder = "New 
 Region"></td>
  </tr>

  <tr>
    <td valign = "top"><div align = "left">Country:</div></td>
    <td valign = "top"><input type = "text" name = "country" placeholder = "New 
Country"></td>
  </tr>

  <tr> 
    <td valign = "top"><div align = "left">About me: </div></td>
    <td valign = "top">
      <input type = "text" name = "about" placeholder = "About me">
    </td>
  </tr>
  <tr>
    <td><button type = "submit" name = "edit">Update profile</button></td>
     </tr>
   </table>
    </form>
    <p align = "center"><a href = "index.php"></a></p>
     <?php
      include_once 'Footer.php';
     ?>

так что да, я не согласен с тем, почему это не работает, любая помощь будет очень признательна!

Длинный выстрел, но попробуйте заключить идентификатор в одинарные кавычки. пример: '$id'

Howard P 31.07.2018 16:12

к сожалению не работает :(

akemedis 31.07.2018 16:14

Также совет по отладке запросов: попробуйте отправить запрос через mysql workbench, phpMyAdmin или что-то еще, что вы используете. Когда вы отправляете запрос, замените переменные PHP на образцы данных, чтобы увидеть, какие ошибки он вызывает. Обычно это проясняет для меня.

Howard P 31.07.2018 16:15

Проверьте, начата ли ваша сессия. Возможно, вы пропустили session_start до вставки. Если сеанс запущен, бросьте туда var_dump($_SESSION);, чтобы посмотреть, что доступно.

mopsyd 31.07.2018 16:15

Чтобы прояснить комментарий Ховарда, вы пытались заключить $ id в одинарные кавычки, верно? ...WHERE user_id = '$id'");

vincebel 31.07.2018 16:16

mopsyd, вы были правы, глупая ошибка, я думал, что он будет включен, потому что он был на главной странице. Большое спасибо, ребята!

akemedis 31.07.2018 16:20
ПРЕДУПРЕЖДЕНИЕ: при использовании mysqli вы должны использовать параметризованные запросы и bind_param для добавления пользовательских данных в свой запрос. НЕ использует экранирование вручную и интерполяцию или конкатенацию строк для достижения этой цели, потому что вы создадите серьезный Ошибки внедрения SQL. Случайно неэкранированные данные представляют собой серьезный риск. Использование связанных параметров менее подробно, и их легче проверить, чтобы убедиться, что вы все делаете правильно.
tadman 31.07.2018 18:00

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

tadman 31.07.2018 18:01

// ПОДГОТОВЛЕННЫЕ ЗАЯВЛЕНИЯ // $ sql = "INSERT INTO users ('user_first, user_last, user_uid, user_city, user_region, user_country') VALUES (?,?,?,?,?,?);"; $ stmt = mysqli_stmt_init ($ conn); if (! mysqli_stmt_prepare ($ stmt, $ sql)) {echo "Ошибка SQL"; } else {mysqli_stmt_bind_param ($ stmt, "sssss", $ first, $ last, $ uid, $ city, $ region, $ country); mysqli_stmt_execute ($ stmt); } .... добавляет это, что вы имеете в виду, чтобы я защищался от инъекции?

akemedis 01.08.2018 05:22
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
9
27
0

Другие вопросы по теме