MySQL语句在phpmyadmin中工作,但在代码中不工作

MySQL语句在phpmyadmin中工作,但在代码中不工作,php,mysql,phpmyadmin,Php,Mysql,Phpmyadmin,我有下面的代码。它在phpmyadmin的sql接口中执行时工作,但当我在服务器上执行它时,$stmt=$con->prepare($sql)总是返回false,我会带着错误退出 请注意,$stmt=$con->prepare($sql)不会返回错误消息。恐怕我在这里也做错了什么 我想我错过了一些重要的东西 在我修改Update语句以返回一个以逗号分隔的更新ID列表之前,Update语句工作正常 $sql = "SET @uids := null; UPD

我有下面的代码。它在phpmyadmin的sql接口中执行时工作,但当我在服务器上执行它时,
$stmt=$con->prepare($sql)
总是返回false,我会带着错误退出

请注意,
$stmt=$con->prepare($sql)
不会返回错误消息。恐怕我在这里也做错了什么

我想我错过了一些重要的东西

在我修改Update语句以返回一个以逗号分隔的更新ID列表之前,Update语句工作正常

$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");
        }

我认为您在PHP中混淆了过程方法和OOP方法 尝试 $stmt=mysqli->prepare($con,$sql) 而不是
($stmt=$con->prepare($sql))

您没有在代码中执行查询。如果执行时出现任何错误,则获取真正的错误只有在prepare成功时才会执行查询。我已经在回显“real”错误,但它是空的。您试图在一个调用中执行三个单独的查询。你不能这样做,除非你使用的是
mysqli\u multi\u query
@Markus-遗憾的是没有;你可能不得不重新思考代码的逻辑是如何工作的,这是错误的
$stmt=mysqli->prepare()
将尝试在
mysqli
中使用名为
prepare
的方法,但由于mysqli不是对象,因此将失败。至少,您应该使用
$mysql->prepare()
。混合使用过程调用和面向对象调用也没有什么错,尽管它确实会使代码更难阅读。