php
  • mysql
  • 2013-08-05 107 views 0 likes 
    0

    當我閱讀關於這個函數的PHP手冊時,我儘管說我正確地執行了它。 不幸的是我得到這個錯誤:mysql多查詢功能不正確

    Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given on line 94 
    

    與此代碼:

    $upSQL = "SELECT * FROM rated_teams WHERE server='$server' AND name='$teamname' AND master='2' ORDER BY id ASC;"; 
    $upSQL .="SELECT name, rating FROM rated_teams WHERE server='$server' AND master='1'"; 
    //echo $upSQL. "<br />"; 
    $upresult=mysqli_multi_query($con, $upSQL); 
    $i=1; 
    $j=1; 
    $myrating=0; 
    while($row = mysqli_fetch_array($upresult)) { //LINE 94 
        if ($row['win'] == 1 && $i <= 3) {  
          echo $i++ . "first 3 wins <br />"; 
          $myrating+=10; 
          $j++; 
    
         } else { 
          if ($row['name'] == $opposer && $row['master'] == 1) { 
           echo $opposer . " " . $row['rating']; 
           echo $j++. " j<br />"; 
          } 
    
          } 
    } 
    echo $myrating; 
    

    所以,直接的問題是:爲什麼這個代碼不正確的?

    +0

    錯誤消息告訴您查詢未正常運行。你需要輸出mysql錯誤'mysql_error()'來看看它爲什麼沒有運行。 –

    +6

    您在查詢結尾忘記了';'。 – Prix

    +1

    除了PHP語句'''終止符之外,多個查詢語句還需要用';'_in SQL string_分隔。 –

    回答

    1

    mysqli_multi_query方法返回一個布爾值,而方法mysqli_fetch_array應該通過一個mysqli_result,正如錯誤告訴你的那樣。您需要改用mysqli_store_result方法,如下所示:

    http://php.net/manual/en/mysqli.multi-query.php

    使用這種方法,您可以遍歷的結果,像這樣:

    if (mysqli_multi_query($con, $upSQL)) { 
    do { 
        if ($result = mysqli_store_result($con)) { 
         while ($row = mysqli_fetch_row($result)) { 
          $currentresult = $row[0]; 
         } 
         mysqli_free_result($result); 
        } 
    } while (mysqli_next_result($con)); 
    } 
    

    的DO-,同時可以確保您第一個結果是在找到其他結果之前得到結果,然後在循環的while段中給出下一個結果。希望這有幫助。

    +0

    HAHA!這解決了它。謝謝! – CSharpMinor

    +0

    謝謝!樂意效勞。如果你能夠將答案標記爲正確的話,那將是美好的。 – mattpic

    相關問題