【发布时间】:2017-05-07 00:22:51
【问题描述】:
这个 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)
}
任何帮助将不胜感激。啊,它告诉我添加文本,所以我们开始吧。
编辑:在我将代码更改为
之后仍然做同样的事情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: Object of class stdClass could not be convert to string in /opt/lampp/htdocs/Game/index.php on line 12'
【问题讨论】:
-
是
$codeword一个字符串吗? -
是的。但如果我把它放在引号里,它会做同样的事情 fyi
-
只是忘了在我的帖子中把它放回引号中,brb
-
你别无选择只能用引号括起来。这样做,再次运行代码,然后在你的问题中写下那个错误是什么
-
您没有从查询中获取任何内容,这就是原因。