php
  • mysql
  • 2013-08-03 69 views 0 likes 
    0

    我做了這個功能。這實際上是我做過的第一個功能之一。但是,我無法執行它。 $ con被定義,我只是沒有粘貼它。實際上,所有的變量都被定義了。mysql查詢功能...不工作

    function cleanse() { 
        $cleansesql = "Select * FROM rated_teams WHERE server='$server' AND name='$myteam' AND opposition='$opposer'"; 
        $result = mysqli_query($con, $cleansesql) 
        or die('A error occured: '.mysqli_error()); 
        while (($row = mysqli_fetch_array($result))) { 
         if ($row['server'] == $server && $row['name'] == $myteam && $row['opposition'] == $opposer && $row['myscore'] == $myscore && $row['oscore'] == $oscore && $row['location'] == $location) { 
          echo "There is a Match."; 
         } else { 
          echo "There are no matches"; 
         } 
        } 
    } 
    

    這就是我所說的。

    if ($solo == "solo" || $solo == "Solo" || $solo == "SOLO") { 
        echo $solo." <br />"; 
        if (!empty($myscore)) { 
         echo $myscore." <br />"; 
         if (!empty($oscore)) { 
          echo $oscore." <br />"; 
          if (!empty($location)) { 
           echo $location." <br />"; 
           cleanse(); 
          } 
         } 
        } 
    } 
    

    也許我沒有正確調用它。我只需要一個比我更懂得幫助的人...那會是你們中的大多數,哈哈哈。

    +2

    您的$ con價值確定在哪裏?我沒有看到你連接到MySQL數據庫,只是傳遞變量 – mattpic

    +0

    傳遞'$ conn'作爲函數參數 – AlexP

    +0

    這不是關於你的直接問題,但你可能想在你的檢查中加入strtolower() 'solo' 有關詳細信息,請參閱http://php.net/manual/en/function.strtolower.php 。 – starshine531

    回答

    1

    將信息傳遞給你的cleanse功能,如$con(因爲你已經創建與數據庫的連接調用此函數之前),$server$myteam$opposer因此它可以使用它。

    所以你的函數的定義將變爲:

    function cleanse($con, $server, $myteam, $opposer) { ... } 
    

    而且你會打電話這樣說:

    cleanse($con, $server, $myteam, $opposer); 
    
    1

    請注意,您正在使用變量$con這是連接到MySQL。
    在查詢之前,您尚未創建與MySQL的連接。
    我建議閱讀關於使用mysqli的基本PHP手冊。
    Remeber的follwing:

    1. 您需要連接到服務器
    2. 您需要選擇u對
    3. 工作DB你將執行查詢針對DB。

    2不是強制性的。

    0

    金巴利是正確的 - 然而這就是爲什麼你的功能無法正常工作, :

    您正在複製您的代碼。該函數不需要檢查您的測試標準與sql的輸出之間是否匹配,因爲數據庫會爲您執行此操作。你的sql所說的是「獲取符合我所有標準的所有結果」,那麼你的函數就會說「檢查所有結果符合我的標準」,這很慢並且不需要。如果你正確地編寫你的sql,幾乎不需要進一步檢查或合併PHP中的數據。

    function cleanse($connection, $server, $myteam, $opposer) 
        { 
        $cleansesql="Select * FROM rated_teams WHERE server=? AND name=? AND opposition=?"; 
        $stmnt=$connection->prepare($cleansesql); 
        $stmnt->bind_param("sss",$server,$myteam,$opposer); 
        $stmnt->execute(); 
        $stmnt->store_result(); 
        return $stmnt->num_rows; 
        } 
    

    我已經寫了,你應該返回行的匹配所有的標準,你的變量rated_teams數這(未經測試)功能。輸入用戶輸入的數據也是安全的,因爲它使用準備好的語句,因此不容易受到SQL注入的影響。

    +0

    $ con被定義。別擔心這一點。 – CSharpMinor

    +0

    致命錯誤:在$ stmnt = $ con> prepare($ cleansesql)上調用成員函數prepare()在非對象 上; – CSharpMinor

    相關問題