【发布时间】:2013-10-18 01:38:19
【问题描述】:
我正在尝试构建一个登录过程,通过使用 $_SESSION 变量,用户的登录凭据被存储并用于在屏幕上显示他们来自数据库的相关数据(即他们只会看到学校数据他们工作)。
<?php
session_start();
if(!isset($_SESSION['Initials'], $_SESSION['Surname']))
{
$host = "xxx";
$username = "xxx";
$password = "xxx";
$database_name = "xxx";
$table_name = "xxx";
mysql_connect($host, $username, $password) OR die("Can't
connect");
mysql_select_db($database_name) OR die("Can't connect to
Database");
$query = "SELECT Class FROM $table_name WHERE Initials = '".
$_SESSION['Initials']."' AND staff LIKE '%".$_SESSION['Surname']."'";
$result = mysql_query($query);
$class = mysql_fetch_array($result);
$count = mysql_num_rows($result);
if($count === NULL)
{
echo "ERROR";
}
else
{
$_SESSION['Class'] = $result;
echo "Class added to sessions";
}
}
?>
通过为 if 语句添加正确的括号,可以轻松解决查询无法识别会话变量的最初问题。我在这里出现的下一个问题是,即使查询应该是成功的(当 $count 为 FALSE 或 NULL 时,我没有收到一条错误消息说“错误”)它没有将结果数组创建到新会话中,因为当我在新页面上打印会话数组时,它仍然只保留“姓名首字母”和“姓氏”会话。
我需要对我的查询或查询后流程进行哪些更改,以便将该数组(因为它必然会抛出多个结果)放入一个新会话中?
非常感谢您对我最初的问题的回答!
【问题讨论】:
-
您的代码块周围缺少“if”语句的大括号。这意味着只有下一条语句是有条件的——其余的无论如何都会执行。
-
不敢相信我错过了这么一个小细节!!!非常感谢,查询中的变量不再识别,但不幸的是它仍然没有在最后创建新的会话(类)......(这与$count参数有什么关系吗?
-
这似乎与您的数据库调用是否成功有关。我建议不要过多使用 mysql_* 函数,因为它们已经过时并且很快就会从 php 中删除,顺便说一下 - 使用 mysqli 或 PDO。
-
我已经设法弄清楚问题出在哪里(最终) - 由于时间不够长,我不允许写下我的答案,但一旦我能够做到,我会这样做的人可以看到 - 感谢有关 mysql 的提示!