MySQL语句在phpmyadmin中工作,但在代码中不工作
我有下面的代码。它在phpmyadmin的sql接口中执行时工作,但当我在服务器上执行它时,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
$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()
。混合使用过程调用和面向对象调用也没有什么错,尽管它确实会使代码更难阅读。