Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mysqli查询返回元数据而不是字段_Php_Sql_Session_Mysqli - Fatal编程技术网

Php 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

此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!";
}
当我这样做的时候:

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

阅读文档:

这假设您连接了相同的API,即
mysqli\uu
,而不是任何其他API

即:

while($row=mysqli\u fetch\u assoc($query)){…}

并检查查询中的错误:

并通过php:

    • 当然,“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”字段(或者试图)。我这样做不对吗?