Php Can';t指定目标表';cms#u用户#u登录#u尝试';for update in FROM子句

Php Can';t指定目标表';cms#u用户#u登录#u尝试';for update in FROM子句,php,mysql,Php,Mysql,我得到了这段代码的上述顺序: $qry_WriteToDatabase = " INSERT INTO cms_user_login_attempts ( cula_user_id, cula_date_time,

我得到了这段代码的上述顺序:

            $qry_WriteToDatabase = "    INSERT INTO cms_user_login_attempts
                                (
                                    cula_user_id,
                                    cula_date_time,
                                    cula_remote_host
                                )
                    VALUES      (
                                    " . $db->SQLString($row->user_id) . ",
                                    Now(),
                                    " . $db->SQLString($str_RemoteHost, true) . "
                                )";
            $db->query($qry_WriteToDatabase);

            $qry_UpdateCount = "UPDATE cms_user_login_attempts 
                                SET cula_attempt_count = (
                                    SELECT COUNT(*)
                                    FROM cms_user_login_attempts
                                    WHERE cula_user_id = ".$db->SQLString($row->user_id)."
                                    AND cula_date_time > DATE_SUB(NOW(), INTERVAL 24 HOUR))
                                    WHERE  cula_user_id = ".$db->SQLString($row->user_id)." 
                                    AND cula_date_time > DATE_SUB(NOW(), INTERVAL 24 HOUR)";
            $db->query($qry_UpdateCount);

不确定我为什么会出现此错误,有人能帮忙吗?

您可以将查询编写为

$qry_UpdateCount = "UPDATE cms_user_login_attempts a
    CROSS JOIN (SELECT COUNT(*) user_count
    FROM cms_user_login_attempts
    WHERE cula_user_id = ".$db->SQLString($row->user_id)."
    AND cula_date_time > DATE_SUB(NOW(), INTERVAL 24 HOUR)
) b
SET a.cula_attempt_count = b.user_count
WHERE  a.cula_user_id = ".$db->SQLString($row->user_id)." 
AND a.cula_date_time > DATE_SUB(NOW(), INTERVAL 24 HOUR)";

这是一个非常基本的错误,请参阅相关错误,也请先搜索您的问题,然后询问it@MKhalidJunaid我发现了这一点,但我发现很难将其应用到我的代码中。您好,我实际上刚刚写了一些类似的东西,我将勾选这一答案,因为您花了时间来做这件事,谢谢。作为salamu alaykum。事实上,刚刚注意到这和我的大不相同,仍然很好。请解释一下代码好吗?@PHPLearner当您更新一个表并从同一个表中选择要更新的表时,无法执行此操作。我们可以使用联接/子选择来克服此问题,并为查询中涉及的表提供新闻别名,在上面的查询中,我使用的是交叉连接,它返回您想要的计数,然后我可以更新原始表