php-对非对象调用成员函数fetch_assoc()

php-对非对象调用成员函数fetch_assoc(),php,mysql,Php,Mysql,表结构: user table: id:int user:varchar hash:varchar realm:int Game Table: ID:int:auto Game:varchar Password:varchar Difficulty:tinytext Realm:tinytext Empty:int timestamp:int Player Table: ID:Int GameID:INT Name:varchar timestamp:int 当我试图获取_assoc()时

表结构:

user table:
id:int
user:varchar
hash:varchar
realm:int

Game Table:
ID:int:auto
Game:varchar
Password:varchar
Difficulty:tinytext
Realm:tinytext
Empty:int
timestamp:int

Player Table:
ID:Int
GameID:INT
Name:varchar
timestamp:int
当我试图获取_assoc()时,我遇到了错误:

对非对象调用成员函数fetch_assoc()

function RequestToRemove($Hash, $timestamp)
    {
        include "conf.php";
        $conn = new mysqli($serverip, $username, $password, $dbname, $Port);
        if ($conn->connect_error) {
            die("Connection failed: " . $conn->connect_error);
        } 
        $hash = mysqli_escape_string($conn, $Hash);
        $UserQuerry = "SELECT * from User where hash = '$hash'";
        $UserResult = $conn->query($UserQuerry);
        if (!$UserResult) {
             echo "hash not found: ".$hash;
        }
        if ($UserResult->num_rows > 0) 
        {

            while($UserRow = $resulti->fetch_assoc()) 
            {
               $PlayerQuerry = "SELECT * from Players where ID = '".$UserRow['id']."'";
               $PlayerResult = $conn->query($PlayerQuerry);
               while($PlayerRow = $PlayerResult->fetch_assoc()) 
                {
                    $gameID = $PlayerRow['GameID'];
                    $gameQuerry = "SELECT * from games where ID = '$gameID'";
                    $gameResult = $conn->query($gameQuerry);
                    if ($gameResult->num_rows > 0) 
                    {
                        while($GameRow = $gameResult->fetch_assoc()) 
                        {
                            if((int)$GameRow['timestamp'] <= ($timestamp - 30) && (int)$GameRow['Empty'] == 1)
                            {
                                $gameDeleteQuerry = "DELETE FROM games where id = '".$gameID."'";
                                $conn->query($gameDeleteQuerry);
                                echo "Game Updated";
                            }
                        }
                        $playerDeleteQuerry = "DELETE FROM Players where id = '$gameID'";
                        $gamesUpdateQuerry = "UPDATE games SET timestamp='$timestamp' where ID = '$gameID'";
                        $gamesUpdateResult = $conn->query($gamesUpdateQuerry);
                        if (!$gamesUpdateResult) {
                            echo "Can't UPDATE game! ID: $gameID Error: ". $conn->error;
                            return;
                        }
                        $conn->query($playerDeleteQuerry);
                        $PlayerQuerry = "SELECT * from players where GameID = '$gameID'";
                        $PlayerResult = $conn->query($PlayerQuerry);
                        if (!$PlayerResult) {
                            echo "Can't get players! Error: " . $conn->Error;
                            return;
                        }
                        if ($PlayerResult->num_rows <= 0) {
                            $gameUpdateEmptyQuerry = "UPDATE games SET Empty='1' where GameID = '".$gameID."'";
                            $conn->query($gameUpdateEmptyQuerry);
                        }

                    } else {
                        echo "0 results";
                    }
                }
            }
        }
        $conn->close();
    }
在HeidiSQL中 我将得到一行响应,但仍然无法在php中获取_assoc()


编辑原因:显示完整功能,已请求

您正在为循环中的
$resulti
重新分配一个不同的值:

$sqll = "DELETE FROM Players where id = '$gameID'";
$sqlu = "UPDATE games SET timestamp='$timestamp' where ID = '$gameID'";
$resulti = $conn->query($sqlu);
mysqli::query()函数很复杂,它可以返回不同类型的返回值——update语句返回true或false,而select语句返回mysqli_结果或false


(是的,这可能有助于将变量命名得更具描述性;)

好吧,这只是我在这里做的一个输入错误^^@Fred ii在修复了输入错误后,它起作用了?仍然不起作用。$Hash=“ae3cb232b5e489050bfed7ed984eb04c”;这只是一个例子hash它的session这个列的列类型是什么,长度是多少?编辑:好的,是“文本”。改为使用
varchar
,并确保它高于32。那么这个
where ID='“$rowi['ID']
-
ID
ID
对于
$rowi['ID']
来说是两个完全不同的动物。那么,我们在哪里?解决了?没有?如果解决了,基于什么?我在你发布之前发现了那个打字错误^^
$sqll = "DELETE FROM Players where id = '$gameID'";
$sqlu = "UPDATE games SET timestamp='$timestamp' where ID = '$gameID'";
$resulti = $conn->query($sqlu);