Php 从数据库检索信息(1个字段/对象;无数组)
我正在为我的网站做一个登录页面,我现在正在测试,这个代码在登录之后。问题是,我想从我的数据库中检索一些信息,但代码不起作用(它不回显任何内容)。我检查了MySQL查询是否正常并且可以工作,但是PHP中没有结果 我很高兴能得到任何帮助和回答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 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->namemysql\u fetch\u字段返回列信息,您不想要该列的数据吗?Changeecho$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++;
}