Php mysqli查询返回元数据而不是字段
此mysqli查询返回给定列的元数据,而不是列中的数据:Php mysqli查询返回元数据而不是字段,php,sql,session,mysqli,Php,Sql,Session,Mysqli,此mysqli查询返回给定列的元数据,而不是列中的数据: $query = mysqli_query($conn, "SELECT id FROM users WHERE pword = '$codeword'"); //Start user session if ($query) { session_start(); $_SESSION['login'] = true; $_SESSION['codeword'] = $codeword; $row = mys
$query = mysqli_query($conn, "SELECT id FROM users WHERE pword = '$codeword'");
//Start user session
if ($query) {
session_start();
$_SESSION['login'] = true;
$_SESSION['codeword'] = $codeword;
$row = mysqli_fetch_assoc($query);
$id = $row['id'];
$_SESSION['id'] = $id;
// Send user to launchpad
header("Location: menu.php");
exit;
} else {
echo "Error!";
}
当我这样做的时候:
var_dump($_SESSION['id']);
它返回以下内容:
object(stdClass)#1 (13) {
["name"]=>
string(2) "id"
["orgname"]=>
string(2) "id"
["table"]=>
string(5) "users"
["orgtable"]=>
string(5) "users"
["def"]=>
string(0) ""
["db"]=>
string(4) "game"
["catalog"]=>
string(3) "def"
["max_length"]=>
int(1)
["length"]=>
int(50)
["charsetnr"]=>
int(63)
["flags"]=>
int(32768)
["type"]=>
int(3)
["decimals"]=>
int(0)
}
任何帮助都将不胜感激。aa它告诉我添加文本,所以我们开始
编辑:在我将代码更改为
while($row = mysqli_fetch_assoc($query)) {
$id = $row['id'];
}
$_SESSION['id'] = $id;
编辑#2:我正在尝试从“游戏”数据库中的字段“id”获取文本值。我的另一个register.php文件中有代码,可以这样做,它看起来如下:
$query1 = mysqli_query($conn, "SELECT id FROM users WHERE id = (SELECT MAX(id) FROM users);");
$column = mysqli_fetch_assoc($query1);
$id = $column["id"];
$id = $id + 1;
但是当我尝试同样的方法时,对于这个文件,情况略有不同:
$query = mysqli_query($conn, "SELECT * FROM users WHERE pword = '$codeword'");
$row = mysqli_fetch_assoc($query);
$id = $row["id"];
$_SESSION['id'] = $id;
并尝试以文本形式访问它:
echo $_SESSION['id'];
它给了我一个错误“Catchable fatal error:stdClass类的对象无法在/opt/lampp/htdocs/Game/index.php的第12行转换为字符串”
当我这样做时:
变量转储($_会话['id']);
它返回以下内容:
object(stdClass)#1 (13) {
["name"]=>
string(2) "id"
["orgname"]=>
string(2) "id"
["table"]=>
string(5) "users"
["orgtable"]=>
string(5) "users"
["def"]=>
string(0) ""
["db"]=>
string(4) "game"
["catalog"]=>
string(3) "def"
["max_length"]=>
int(1)
["length"]=>
int(50)
["charsetnr"]=>
int(63)
["flags"]=>
int(32768)
["type"]=>
int(3)
["decimals"]=>
int(0)
}
- 这是正常的
while($row)
或foreach
阅读文档:
mysqli\uu
,而不是任何其他API
即:
while($row=mysqli\u fetch\u assoc($query)){…}
并检查查询中的错误:
- 当然,“mysqli_query”不会返回类似的内容
你发布的代码都不会有这样的结果。这意味着您的
$\u会话['id']
变量在其他地方被覆盖。
在任何重定向之前,您可以通过将返回的id在适当的位置进行变量转储来测试它。编辑:让它工作起来!不知道是否有人会回来,但以下是有效的方法:
$query = mysqli_query($conn, "SELECT * FROM users WHERE pword = '$codeword'");
$row = mysqli_fetch_assoc($query);
$_SESSION['id'] = $row['id'];
$codeword
是字符串吗?是。但是如果我把它放在引号里,它也会做同样的事情。我只是忘了在我的帖子里把它放回引号里,布莱比你别无选择,只能用引号把它括起来。这样做,再次运行代码,然后在问题中写下错误是什么您没有从查询中获取任何内容,这就是原因。@Nienaber不客气。如果我再也没有收到你的来信,那么你可以把这个问题标记为已经解决了,哈哈。@Nienaber,不要只是说谢谢就跑掉了。。。如果它对你有帮助,就接受它。呃,你愿意分享你的智慧吗?我一弄明白,当然会接受的,谢谢你的努力。@Nienaber我不想让你因为错误的原因接受答案。我需要知道真正的问题是什么。我刚刚在上面贴了一条评论。var_dump($id)什么也不返回。还有@Fred-ii-你说我没有获取任何东西,但我从里面抓取了一个关联数组,然后抓取了“id”字段(或者试图)。我这样做不对吗?