#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-инъекция.