2015-10-08 92 views
-1

表结构:PHP - 调用一个成员函数FETCH_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 

当我尝试FETCH_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(); 
    } 

但是当即时运行

SELECT * from User where hash = 'ae3cb232b5e489050bfed7ed984eb04c' 

在HeidiSQL 我会得到一个排的反应,但我仍然不能FETCH_ASSOC()在PHP

为编辑原因:显示完整的功能,请

+0

清楚,只是一个错字我在这里做^^ @弗雷德-II- – user3050767

+0

固定错字后,它'工作? – fsn

+0

仍然没有woking。 $ Hash =“ae3cb232b5e489050bfed7ed984eb04c”;它只是一个例子,它的会话散列 – user3050767

回答

0

你重新分配一个不同的值$resulti内循环:

$sqll = "DELETE FROM Players where id = '$gameID'"; 
$sqlu = "UPDATE games SET timestamp='$timestamp' where ID = '$gameID'"; 
$resulti = $conn->query($sqlu); 

和mysqli ::查询()函数是棘手的,它可以返回不同类型的返回值 - 更新语句返回true或false,而select语句返回mysqli_result或假。

(是的,它可以帮助来命名变量的详细描述一点;))

+0

我发现以前的错字你发布^^ – user3050767

相关问题