2016-02-16 137 views
-1

我有以下代碼片段。它在phpmyadmin的sql界面中執行時有效,但是當我在服務器上執行它時$stmt = $con->prepare($sql)總是返回false,並退出時顯示錯誤。MySQL語句適用於phpmyadmin,但不適用於代碼

請注意$stmt = $con->prepare($sql)不會返回錯誤消息。恐怕我也可能在這裏做錯了什麼?

我想我錯過了重要的東西在這裏!

另外,Update語句在我修改它之前正確地工作,以返回逗號分隔的更新ID列表。

$sql = "SET @uids := null; 
        UPDATE userpicks, brackets 
        SET userpicks.player1 = ?, userpicks.pick = ? 
        WHERE userpicks.id_user = ? AND userpicks.id_tournament = ? AND brackets.stage > ? AND userpicks.player1 = ? 
        AND (SELECT @uids := CONCAT_WS(',', brackets.id, @uids)); 
        SELECT @uids;"; 

     if ($stmt = $con->prepare($sql)) { 
      $stmt->bind_param('iiiiii', $noPlayerID, $noPlayerID, $_SESSION ["id"], $id_tournament, $bracket_stage, $id_player); 
     } else { 
      echo mysqli_error($con); 
      return getJSONArrayError("Error occurred"); 
     } 
+0

你沒有在你的代碼中執行你的查詢。 –

+1

得到真正的錯誤http://php.net/manual/en/mysqli.error.php應該有什麼,當你執行它 –

+0

查詢只執行如果準備成功。我已經迴應了「真實」的錯誤,但它是空的。 – Markus

回答

-2

我認爲你是在PHP中混合了程序和OOP方法 http://php.net/manual/en/mysqli.quickstart.dual-interface.php 嘗試 $語句= mysqli->準備($ CON,$ SQL) 代替 ($語句= $ CON組>準備($ sql))

+0

這是錯的。 '$ stmt = mysqli-> prepare()'會嘗試在'mysqli'中使用'prepare'方法,但由於mysqli不是一個對象,它會失敗。至少,你應該使用'$ mysql-> prepare()'。混合程序和OOP調用也沒有任何問題,儘管它確實會使你的代碼難以閱讀。 – andrewsi

相關問題