для ВСТАВКИ пути к местоположению загруженного изображения в pic_location пользователя

#php #sql

#php #sql

Вопрос:

Как мне ВСТАВИТЬ путь к местоположению загруженного изображения в pic_location пользователя в базе данных?

Итак, мне удалось загрузить изображение через php в папку, НО сейчас моя проблема в том, что я не знаю, как будет выглядеть запрос, если я захочу этого добиться…

Участник входит в систему, когда он загружает изображение, поэтому СЕАНС запущен.

Я дам вам свой код, чтобы посмотреть, и если вы сможете определить, что делать…

Спасибо

Мой picUpload.php (Где я загрузил изображение и где я хочу вставить путь к местоположению в столбец пользователя pic_loaction в таблице users)

     <?php
         include 'connect.php';
         include 'header.php';

         if(isset($_SESSION['signed_in']) amp;amp; $_SESSION['signed_in'] == true)
        {
             //This is the directory where images will be saved 
             $target=$_SERVER['DOCUMENT_ROOT'] . "/avatars/" . basename( $_FILES['file']['name']); 

             //This gets all the other information from the form 
             $pic_location=($_FILES['file']['name']); 

             //Writes the information to the database
             $sql = "UPDATE users SET pic_location='$target' WHERE user_id=" . $_SESSION['user_id'];

             //Writes the photo to the server 
             if(move_uploaded_file($_FILES['file']['tmp_name'], $target)) 
             { 

             //Tells you if its all ok 
             echo "The file ". basename( $_FILES['file']['name']). " has been uploaded, and your information has been added to the directory"; 
             } 
             else { 

             //Gives and error if its not 
             echo "Sorry, there was a problem uploading your file."; 
             }

        }
        else
        {
            //nothing
        }
?> 
  

мой connect.php

 <?php 
    session_start();
    //connect.php

    $server = 'localhost';
    $username = 'root';
    $password = '';
    $database = 'mydatabase';

    if(!mysql_connect('localhost', 'root', ''))
    {
        exit('Error: could not establish database connection');
    }
    if(!mysql_select_db($database))
    {
        exit('Error: could not select the database');
    }
?>
  

мой header.php

 <!DOCTYPE HTML>
    <head>
        <title> ShareLink </title>
        <link rel="stylesheet" href="style.css" type="text/css">

        <script src="jquery-1.6.4.min.js" type="text/javascript" charset="utf-8"></script>
        <script type="text/javascript" src="script.js"></script>

        <!-- Back to Top easing jQuery -->
            <link rel="stylesheet" type="text/css" media="screen,projection" href="css/ui.totop.css" />

        <!-- jquery --> 
        <script src="js/jquery-1.3.2.min.js" type="text/javascript"></script>
        <!-- easing plugin ( optional ) -->
        <script src="js/easing.js" type="text/javascript"></script>
        <!-- UItoTop plugin -->
        <script src="js/jquery.ui.totop.js" type="text/javascript"></script>


        <script type="text/javascript">
            $(document).ready(function() {
                /*
                var defaults = {
                    containerID: 'moccaUItoTop', // fading element id
                    containerHoverClass: 'moccaUIhover', // fading element hover class
                    scrollSpeed: 1200,
                    easingType: 'linear' 
                };
                */

                $().UItoTop({ easingType: 'easeOutQuart' });

            });
        </script>
    </head>
    <body>
    <h1> ShareLink </h1>
        <div id="wrapper">
        <div id="menu">
            <a class="item" href="/index.php">Home</a> -
            <a class="item" href="/create_topic.php">Create a topic</a> -
            <a class="item" href="/create_cat.php">Create a category</a> - 
            <a class="item" href="/members.php"> Members </a> - 
            <a class="item" href="/search_form.php"> Search </a> - 
            <a class="item" href="/profile.php"> Profile </a>


            <div id="userbar">
            <?php
            if($_SESSION['signed_in'])
            {
                echo 'Hello <b>' . htmlentities($_SESSION['user_name']) . '</b>. <a class="item" href="signout.php">Log out</a>';
            }
            else
            {
                print'<a class="item" href="signin.php">Log in</a> or <a class="item" href="signup.php">Register</a>';
            }
            ?></div>
        </div>
            <div id="content">
  

и вот моя таблица пользователей в моем файле database.sql

 CREATE TABLE users (  
user_id     INT(8) NOT NULL AUTO_INCREMENT,  
user_name   VARCHAR(30) NOT NULL,  
user_pass   VARCHAR(255) NOT NULL,  
user_email  VARCHAR(255) NOT NULL,  
user_date   DATETIME NOT NULL,  
user_level  INT(8) NOT NULL,  
pic_location  VARCHAR(255) NOT NULL,  
UNIQUE INDEX user_name_unique (user_name),  
PRIMARY KEY (user_id)  
);
  

Комментарии:

1. вам нужно сохранить $target, именно там теперь находится изображение. «ОБНОВИТЕ пользователей, УСТАНОВИВ pic_location='».mysql_real_escape_string($target).»‘ ГДЕ user_id=».intval($userid)

2. Смотрите мой обновленный файл! Я использовал код, который вы мне дали, который имеет смысл, но я получаю сообщение об ошибке: Неопределенная переменная: user_id в C:xampphtdocspicUpload.php в строке 12… Как это исправить, потому что я не вижу, что там не так?

3. потому что $user_id не определен. вы сказали, что пользователь вошел в систему в этот момент — именно здесь вам нужно ввести значение идентификатора пользователя

4. где-то в начале кода (в header.php или connect.php ) вы проверяете, вошел ли пользователь в систему. вам необходимо получить информацию о пользователе из базы данных. эта информация содержит идентификатор пользователя пользователя, а позже, когда вы запускаете запрос на ОБНОВЛЕНИЕ, вы добавляете идентификатор пользователя в часть WHERE

5. ОК. Я обновил вопрос… СНОВА… Спасибо за ваше терпение до сих пор! Я новичок в sql, и для меня это довольно сложная задача! Должен ли я использовать запрос ВЫБОРА для выбора идентификатора пользователя при входе в систему? Но в каком, connect.php или header.php ?

Ответ №1:

сохраните переменную $target как pic_location, и запрос не будет вставлен, это должен быть запрос обновления.

Ответ №2:

Как писал Пунит, используйте переменную $target для обновления записи пользователя. В запросе используйте ОБНОВЛЕНИЕ вместо ВСТАВКИ, убедитесь, что вы определили идентификатор пользователя (вставка, которая у вас есть прямо сейчас, просто добавляет новую строку, но вы хотите изменить существующую строку, поэтому вам нужно предложение WHERE), и вам обязательно следует очистить $target перед использованиемэто в запросе, иначе у вас слепая SQL-инъекция.