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);