returns 错误 mysqli_query() 期望参数 1 为 mysqli,为 steam 登录提供的空值

returns the error mysqli_query() expects parameter 1 to be mysqli, null given for steam login

Warning: mysqli_query() expects parameter 1 to be mysqli, null given

嘿,一直收到这个错误,不知道为什么。这是 Steam 登录的代码,我已经看到这个错误在这里发布了一堆但是似乎找不到任何具体的东西 link 以前的 answers/help 会很棒。

foreach ($json_decoded->response->players as $player)
 {
 $sql_fetch_id = "SELECT * FROM users_steam WHERE steamid = '$player->steamid'";
 $query_id = mysqli_query($db, $sql_fetch_id);

$_SESSION['name'] = $player->personaname;
 $_SESSION['steamid'] = $player->steamid;
 $_SESSION['avatar'] = $player->avatar;

if (mysqli_num_rows($query_id) == 0) {
  $sql_steam = "INSERT INTO users_steam (name, steamid, avatar) VALUES  ('$player->personaname', '$player->steamid', '$player->avatar')";
 mysqli_query($db, $sql_steam);
}
 }

$db 来自包含 db.php 代码

<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "my_db");

if (!$link) {
    echo "Error: Unable to connect to MySQL." . PHP_EOL;
    echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
    echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
    exit;
}

mysqli_close($link);
?>

您需要一个有效的连接对象才能传递给 mysqli_query 函数。在你的情况下,有两个问题:

  1. 您在创建连接后立即关闭连接 - mysqli_close($link); in db.php

  2. 变量名($db)与你在db.php中给出的($link)不一样。

所以你必须:

  • db.php

  • 中删除 mysqli_close($link);
  • $query_id = mysqli_query($db, $sql_fetch_id);

  • 行将$db改为$link