2016-02-16 108 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

相关问题