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当您更新一个表并从同一个表中选择要更新的表时,无法执行此操作。我们可以使用联接/子选择来克服此问题,并为查询中涉及的表提供新闻别名,在上面的查询中,我使用的是交叉连接,它返回您想要的计数,然后我可以更新原始表