如何在 php 中获取选定的数据库值作为会话变量?
How to get a selected database value as a session variable in php?
我想获取 users
table 中的 id
作为名为 $_SESSION['id']
的 PHP 会话变量。但是当我打印会话变量时,我得到了 Undefined index
作为输出。
这是我的 PHP 代码。
$jsqla = mysql_query("select id, user_name, user_type from users where pw='$pass' and email='$email'") or die("Website under maintenance.");
$jfeta = mysql_fetch_assoc($jsqla);
$id = $jfeta['id'];
$_SESSION['id'] = $id;
您是否使用 session_start 启动会话?
<?php
session_start();
?>
之后
$id = $jfeta['id'];
应该有效:
<?php
$jsqla = mysql_query("select id, user_name, user_type from users where pw='".$pass."' and email='".$email."'") or die("Website under maintenance.");
$jfeta = mysql_fetch_assoc($jsqla);
session_start();
$id = $jfeta['id'];
$_SESSION['id'] = $id;
?>
您的选择也可能是问题所在:
$jsqla = mysql_query("select id, user_name, user_type from users where pw='$pass' and email='$email'") or die("Website under maintenance.");
可以用这个更好地工作:
$jsqla = mysql_query("select id, user_name, user_type from users where pw='".$pass."' and email='".$email."'") or die("Website under maintenance.");
消息"Undefined index"表示您使用的一个值未设置。
您可以通过示例来防止这种情况:
if(isset($jfeta['id']))
{
//do thing
}
mysql 已弃用。请改用 mysqli 或 PDO。
尽管如此...请更新您的查询。
为了更好地了解和调试,首先将您的 sql 查询存储在一个变量中:
$sql = "select id, user_name, user_type from users where pw='".$pass."' and email='".$email."'";
现在使用此代码:
(http://php.net/manual/en/function.mysql-fetch-assoc.php)
$result = mysql_query($sql);
if (!$result) {
echo "Could not successfully run query ($sql) from DB: " . mysql_error();
exit;
}
if (mysql_num_rows($result) == 0) {
echo "No rows found, nothing to print so am exiting";
exit;
}
$row = mysql_fetch_assoc($result);
$id = $row["id"];
$_SESSION['id'] = $id;
但再次...使用 mysqli 或 PDO - mysql 已弃用!
Warning
This extension is deprecated as of PHP 5.5.0, and will be removed in
the future.
首先使用以下代码检查是否设置了会话变量。
if(isset($_SESSION['id'])) {
echo $_SESSION['id'];
} else {
echo "error.";
}
我想获取 users
table 中的 id
作为名为 $_SESSION['id']
的 PHP 会话变量。但是当我打印会话变量时,我得到了 Undefined index
作为输出。
这是我的 PHP 代码。
$jsqla = mysql_query("select id, user_name, user_type from users where pw='$pass' and email='$email'") or die("Website under maintenance.");
$jfeta = mysql_fetch_assoc($jsqla);
$id = $jfeta['id'];
$_SESSION['id'] = $id;
您是否使用 session_start 启动会话?
<?php
session_start();
?>
之后
$id = $jfeta['id'];
应该有效:
<?php
$jsqla = mysql_query("select id, user_name, user_type from users where pw='".$pass."' and email='".$email."'") or die("Website under maintenance.");
$jfeta = mysql_fetch_assoc($jsqla);
session_start();
$id = $jfeta['id'];
$_SESSION['id'] = $id;
?>
您的选择也可能是问题所在:
$jsqla = mysql_query("select id, user_name, user_type from users where pw='$pass' and email='$email'") or die("Website under maintenance.");
可以用这个更好地工作:
$jsqla = mysql_query("select id, user_name, user_type from users where pw='".$pass."' and email='".$email."'") or die("Website under maintenance.");
消息"Undefined index"表示您使用的一个值未设置。 您可以通过示例来防止这种情况:
if(isset($jfeta['id']))
{
//do thing
}
mysql 已弃用。请改用 mysqli 或 PDO。
尽管如此...请更新您的查询。
为了更好地了解和调试,首先将您的 sql 查询存储在一个变量中:
$sql = "select id, user_name, user_type from users where pw='".$pass."' and email='".$email."'";
现在使用此代码:
(http://php.net/manual/en/function.mysql-fetch-assoc.php)
$result = mysql_query($sql);
if (!$result) {
echo "Could not successfully run query ($sql) from DB: " . mysql_error();
exit;
}
if (mysql_num_rows($result) == 0) {
echo "No rows found, nothing to print so am exiting";
exit;
}
$row = mysql_fetch_assoc($result);
$id = $row["id"];
$_SESSION['id'] = $id;
但再次...使用 mysqli 或 PDO - mysql 已弃用!
Warning
This extension is deprecated as of PHP 5.5.0, and will be removed in the future.
首先使用以下代码检查是否设置了会话变量。
if(isset($_SESSION['id'])) {
echo $_SESSION['id'];
} else {
echo "error.";
}