Mysql проблема с использованием $ _SESSION в программе - PullRequest
0 голосов
/ 14 января 2011

Я пытаюсь использовать $ _SESSION ['valid_user'] в скрипте .php, который обращается к таблице "mail" в разделе "users".$ _SESSION ['valid_user'] был определен в сценарии, который я включил.Всякий раз, когда я использую «WHERE to = $ _ SESSION ['valid_user']» в своем операторе SELECT, я получаю пустую страницу.Однако, если я уберу его, скрипт запустится и отобразит все сообщения в базе данных, а не только сообщение, которое было определено для показа этому конкретному имени пользователя.Несмотря на это, я могу вывести $ _SESSION ['valid_user'] вне цикла while или оператора SELECT.Вот мой код:

<?php

include("mainmenu.php");

include("checklogin.php");

// $ _ SESSION ['valid_user'], определенный в checklogin.php

$con = mysql_connect("localhost", "root", "g00dfor@boy"); if(!$con){ die(mysql_error());}

mysql_select_db("users", $con);

$result = mysql_query("SELECT * FROM mail WHERE to=$_SESSION['valid_user']");

// при выполнении с WHERE to = $_SESSION ['valid_user'] отображает пустую страницу.

while($row = mysql_fetch_array($result)) {

echo "To: " . $row['to'] . "| From: " . $row['from'] . "<br/>";

echo "Subject: " . $row['subject'] . "<br/><br/>" . "Message: " . $row['message'];

echo "<br/>";

}

mysql_close($con);

?>

Не говорите: «Поместите $ _SESSION ['valid_user'] в двойные кавычки".Я уже пробовал это.

Ответы [ 5 ]

2 голосов
/ 14 января 2011

Вам необходимо заключить скобки в переменную SESSION в вашем запросе.

изменить

$result = mysql_query("SELECT * FROM mail WHERE to=$_SESSION['valid_user']")

на

$result = mysql_query("SELECT * FROM mail WHERE to='{$_SESSION['valid_user']}'")

РЕДАКТИРОВАТЬ

Вам необходимо изменить

while($row = mysql_fetch_array($result))

на

while($row = mysql_fetch_assoc($result))

, поскольку вы ссылаетесь на столбцы по их именам, а не по значениям их индекса.

2 голосов
/ 14 января 2011

Изменить на $result = mysql_query("SELECT * FROM mail WHERE to='".$_SESSION['valid_user']."'");

0 голосов
/ 14 января 2011

Предположительно user_name - это переменная, изначально предоставленная пользователем вашего сайта? В этом случае вы абсолютно должны избежать его при встраивании в SQL-запрос, иначе вы будете подвержены атакам с использованием инъекций:

$result = mysql_query("SELECT * FROM mail WHERE to='".mysql_escape_string($_SESSION['valid_user'])."'");
0 голосов
/ 14 января 2011

Попробуйте записать свой запрос в переменную и распечатать его, чтобы увидеть, что вы получите.

$query = "SELECT * FROM mail WHERE to=$_SESSION['valid_user']";

Если $ _SESSION ['valid_user'] содержит пробелы, вам нужно будет обернуть его в некоторой формеиз одинарных или двойных кавычек другой мудрый MySQL не будет знать, что вы действительно хотите.

0 голосов
/ 14 января 2011

Попробуйте

 $result = mysql_query("SELECT * FROM mail WHERE to='".$_SESSION['valid_user']."'");

или

 $result = mysql_query("SELECT * FROM mail WHERE to='$_SESSION[valid_user]'");

Оба не должны быть действительными запросами;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...