php mysql更新两个表/列

时间:2011-05-10 17:42:39

标签: php mysql sql

我的表格: blocked_peoples 成员。 在表格 blocked_peoples ips = 成员 signup_ip

假设我想阻止某人访问我的网站。我通过他的IP阻止用户,它也会使用 1 更新成员表和列禁止

简而言之,如果我更新表blocked_peoples(列ips),并且结果与在成员表更新列中使用成员(列signup_ip)相同/结果相同。

有可能吗?如果是的话,sql会是什么样的?

3 个答案:

答案 0 :(得分:1)

UPDATE blocked_peoples, members
   SET members.banned = 1 
 WHERE members.signup_ip = blocked_peoples.ip 
   AND blocked_peoples.ip = 'ip.address.goes.here';

根据你的问题,这是我能想到的最好的。我不确定。在更新中使用两个表没有意义,因为成员表同时具有ip和“blocked”标志。

答案 1 :(得分:0)

步骤进行:

  • 首先将表引擎设为INNODB
  • 然后使用约束ON UPDATE CASCADE ON DELETE CASCADE
  • 创建外键引用
  • parent_table(blocked_people).ips将引用子表(成员).signup_ip

了解有关外键引用的更多信息。

乐于助人:)

答案 2 :(得分:0)

如果与blocked_peoples的关系是1比1,我建议完全删除members表。否则,您应该从banned删除members列,并专门依赖blocked_peoples来检查禁止的IP。

示例更新:

UPDATE `members` SET `banned` = 1 WHERE `signup_Ip` = '123.123.123.123';

示例选择:

SELECT * FROM `members` WHERE `banned` = 1