Php 从数据库检索信息(1个字段/对象;无数组)

Php 从数据库检索信息(1个字段/对象;无数组),php,mysql,database,userinfo,Php,Mysql,Database,Userinfo,我正在为我的网站做一个登录页面,我现在正在测试,这个代码在登录之后。问题是,我想从我的数据库中检索一些信息,但代码不起作用(它不回显任何内容)。我检查了MySQL查询是否正常并且可以工作,但是PHP中没有结果 我很高兴能得到任何帮助和回答 //---MySQL connection---// $server = "localhost"; $user = "root"; $pass = "password"; $db = "users"; $table = "users"; mysql_conne

我正在为我的网站做一个登录页面,我现在正在测试,这个代码在登录之后。问题是,我想从我的数据库中检索一些信息,但代码不起作用(它不回显任何内容)。我检查了MySQL查询是否正常并且可以工作,但是PHP中没有结果

我很高兴能得到任何帮助和回答

//---MySQL connection---//
$server = "localhost";
$user = "root";
$pass = "password";
$db = "users";
$table = "users";
mysql_connect($server,$user,$pass) or die(mysql_error());
mysql_select_db($db) or die(mysql_error());
//----------------------//

//---MySQL query, data selection---//
$sesuser = $_SESSION['username'];
$sql = "SELECT data FROM $table WHERE username='$sesuser'";
$predata = mysql_query($sql);
$data = mysql_fetch_field($predata);
//---------------------------------//

//---Check if session is registered---//
session_start();
if(session_is_registered("username")){
    echo "\n"."Hello ".$_SESSION["username"]."<br />";
    echo $data; //!!this line doesn't work
}
else{
    echo "<script>window.location=/login/</script>";
}
//------------------------------------//
?>
/--MySQL连接---//
$server=“localhost”;
$user=“root”;
$pass=“password”;
$db=“用户”;
$table=“用户”;
mysql_connect($server,$user,$pass)或die(mysql_error());
mysql_选择_db($db)或die(mysql_error());
//----------------------//
//---MySQL查询、数据选择---//
$sesuser=$\会话['username'];
$sql=“从$table中选择数据,其中username='$sesuser';
$predata=mysql\u查询($sql);
$data=mysql\u fetch\u字段($predata);
//---------------------------------//
//---检查会话是否已注册---//
会话_start();
如果(会话已注册(“用户名”)){
echo“\n”“你好”$\u会话[“用户名”]。“
”; echo$data;//!!这行行不通 } 否则{ echo“window.location=/login/”; } //------------------------------------// ?>
session\u start()
放在顶部或在使用
$\u session
变量之前

还有一件事:从PHP 5.3.0开始,该函数已被弃用。非常不鼓励依赖此功能

更好的方法
session_start();
//---MySQL查询、数据选择---//
$sesuser=mysql\u real\u escape\u字符串($\u SESSION['username']);
$sql=“从$table中选择数据,其中username='$sesuser';
$predata=mysql\u查询($sql);
$data=mysql\u fetch\u字段($predata);
//---------------------------------//
//---检查会话是否已注册---//
如果(isset($\u会话['username'])){
echo“\n”“Hello”“.htmlentities($\u会话[“用户名])。”
; 回波数据; } 否则{ 标题(“位置:login.php”); 退出(); }
session\u start()
放在顶部或在使用
$\u session
变量之前

还有一件事:从PHP 5.3.0开始,该函数已被弃用。强烈反对依赖此功能

更好的方法
session_start();
//---MySQL查询、数据选择---//
$sesuser=mysql\u real\u escape\u字符串($\u SESSION['username']);
$sql=“从$table中选择数据,其中username='$sesuser';
$predata=mysql\u查询($sql);
$data=mysql\u fetch\u字段($predata);
//---------------------------------//
//---检查会话是否已注册---//
如果(isset($\u会话['username'])){
echo“\n”“Hello”“.htmlentities($\u会话[“用户名])。”
; 回波数据; } 否则{ 标题(“位置:login.php”); 退出(); }
var\u dump($data)-这是怎么说的

是的,但是会话在文件开始时开始

并尝试(通过p):

$i=0;
而($i\n”;
$meta=mysql\u fetch\u字段($result,$i);
如果(!$meta){
echo“无可用信息
\n”; } 回声“ blob:$meta->blob 最大长度:$meta->最大长度 多个密钥:$meta->多个密钥 名称:$meta->name not_null:$meta->not_null 数值:$meta->numeric 主密钥:$meta->primary\u密钥 表:$meta->table 类型:$meta->type 唯一密钥:$meta->unique\u密钥 未签名:$meta->unsigned 零填充:$meta->zerofill "; $i++; }
如果您将
mysql\u fetch\u字段
更改为
mysql\u fetch\u行
,您将能够通过以下方式访问数据:
$data[0]

var\u dump($data)-这是怎么说的

是的,但是会话在文件开始时开始

并尝试(通过p):

$i=0;
而($i\n”;
$meta=mysql\u fetch\u字段($result,$i);
如果(!$meta){
echo“无可用信息
\n”; } 回声“ blob:$meta->blob 最大长度:$meta->最大长度 多个密钥:$meta->多个密钥 名称:$meta->name not_null:$meta->not_null 数值:$meta->numeric 主密钥:$meta->primary\u密钥 表:$meta->table 类型:$meta->type 唯一密钥:$meta->unique\u密钥 未签名:$meta->unsigned 零填充:$meta->zerofill "; $i++; }

如果您将
mysql\u fetch\u字段
更改为
mysql\u fetch\u行
,您将能够通过以下方式访问数据:
$data[0]

基本上,有一个$data返回的对象,您可以像
$data->name

基本上,$data中返回一个对象,您可以像
$data->name

mysql\u fetch\u字段返回列信息,您不想要该列的数据吗?Change
echo$data进入
回显htmlspecialchars(打印($data,true))
并重试。@Fasand,永远不要将超全局变量直接注入查询中。这是一个SQL注入漏洞,使用
$var=mysql\u real\u escape\u字符串($\u SESSION['username'])请参见:@hakre是这样出现的:stdClass对象([name]=>data[table]=>users[def]=>max_length]=>9[not_null]=>1[primary_key]=>0[multiple_key]=>0[unique_key]=>0[numeric]=>0[blob]=>0[type]=>string[unsigned]=>0[zeroffill]=>0)mysql_fetch字段返回列信息,您不想要列的数据吗?更改
echo$data进入
回显htmlspecialchars(打印($data,true))
并重试。@Fasand,永远不要将超全局变量直接注入查询中。这是一个SQL注入漏洞,使用
$var=mysql\u real\u escape\u字符串($\u SESSION['username'])请参见:@hakre是这样出现的:stdClass对象([name]=>data[table]=>users[def]=>max\u length]=>9[not\u null]=>1[primary\u key]=>0[multiple\u key]=>0[
session_start();
//---MySQL query, data selection---//
$sesuser = mysql_real_escape_string($_SESSION['username']);
$sql = "SELECT data FROM $table WHERE username='$sesuser'";
$predata = mysql_query($sql);
$data = mysql_fetch_field($predata);
//---------------------------------//

//---Check if session is registered---//

if(isset($_SESSION['username'])){
    echo "\n"."Hello ".htmlentities($_SESSION["username"])."<br />";
    echo $data; 
}
else{
    header("Location :"login.php");
    exit();
}
$i = 0;
while ($i < mysql_num_fields($result)) {
    echo "Information for column $i:<br />\n";
    $meta = mysql_fetch_field($result, $i);
    if (!$meta) {
        echo "No information available<br />\n";
    }
    echo "<pre>
blob:         $meta->blob
max_length:   $meta->max_length
multiple_key: $meta->multiple_key
name:         $meta->name
not_null:     $meta->not_null
numeric:      $meta->numeric
primary_key:  $meta->primary_key
table:        $meta->table
type:         $meta->type
unique_key:   $meta->unique_key
unsigned:     $meta->unsigned
zerofill:     $meta->zerofill
</pre>";
    $i++;
}