概述:
我不知道如何从一个查询中创建受影响行的数组并在另一个查询中处理它们中的每一行。
详细信息:
我的第一个查询将过去 90 天内未登录的任何帐户标记为不活动。在表 phpbb_users 中有一列 user_id。对于受第一个查询影响的任何行,我想要一个包含 user_id 的数组。
// first query
$result = mysql_query("UPDATE phpbb_users SET user_type = '1', user_inactive_time = '$inactivetime', theinactivereason = '90dayssincelastlogin', user_inactive_reason = '3' WHERE DATE_ADD(FROM_UNIXTIME(user_lastvisit), INTERVAL 90 DAY) < NOW() AND user_type = '0' AND user_lastvisit != '0'")
or die(mysql_error());
然后我想处理数组中从第一个查询到第二个查询的每个 userid,并在表 phpbb_phonelist 中设置 activenumber = '0'。
// second query -> $user_id is the column user_id corresponding to each row in the first query
$result = mysql_query("UPDATE phpbb_phonelist SET activenumber = '0' WHERE whoid = '$user_id'")
or die(mysql_error());
最佳答案
循环遍历所有用户的效率很低,所以我将向您展示推荐的方式。
你可以有一个像这样的单个 SQL 语句(请先在数据库副本上测试):
$result =
mysql_query("UPDATE phpbb_users, phpbb_phonelist
SET
phpbb_users.user_type = '1',
phpbb_users.user_inactive_time = '$inactivetime',
phpbb_users.theinactivereason = '90dayssincelastlogin',
phpbb_users.user_inactive_reason = '3',
phpbb_phonelist.activenumber = '0'
WHERE
DATE_ADD(FROM_UNIXTIME(phpbb_users.user_lastvisit), INTERVAL 90 DAY) < NOW()
AND phpbb_users.user_type = '0'
AND phpbb_users.user_lastvisit != '0'
AND phpbb_phonelist.whoid = phpbb_users.user_id ");
不确定您的用户 ID 列是什么。
关于php - 创建受影响行的数组并在另一个查询中处理它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29056278/