mysqli查询返回元数据而不是字段

时间:2016-12-21 14:28:44

标签: 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 = 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中转换为字符串'

3 个答案:

答案 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)

编辑:搞定了! Dunno,如果有人会回来,但这是有效的:

$query = mysqli_query($conn, "SELECT * FROM users WHERE pword = '$codeword'");
$row = mysqli_fetch_assoc($query);
$_SESSION['id'] = $row['id'];