此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 = mysqli_fetch_assoc($query);
$id = $row['id'];
$_SESSION['id'] = $id;
// Send user to launchpad
header("Location: menu.php");
exit;
} else {
echo "Error!";
}
当我这样做的IE时:
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)
}
任何帮助将不胜感激。 Aaaand告诉我要添加文字,所以我们走了。
编辑:在我将代码更改为之后仍然做同样的事情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'];
它给了我错误'可捕获的致命错误:类stdClass的对象无法在第12行的&opt/lampp/htdocs/Game/index.php中转换为字符串'
答案 0 :(得分:0)
当我这样做时: 后续代码var_dump($ _ SESSION [ '身份证']); 它返回:
如果你想要回复那些问题,你需要从查询中进行循环。
使用排序循环,例如while($row)
或foreach
。
阅读文档:
这假设您使用相同的API连接,mysqli_
而不是任何其他API。
即:
while($row=mysqli_fetch_assoc($query)){...}
并检查查询错误:
并通过php:
答案 1 :(得分:-1)
当然," mysqli_query" 不会返回此类内容。
您发布的代码都没有这样的结果。这意味着您的$_SESSION['id']
变量会被其他地方覆盖。
您可以在重定向之前通过var_dump对返回的ID 就地进行测试。
答案 2 :(得分:-1)
$query = mysqli_query($conn, "SELECT * FROM users WHERE pword = '$codeword'");
$row = mysqli_fetch_assoc($query);
$_SESSION['id'] = $row['id'];