簡體   English   中英

PHP的MySQL更新兩個表/列

[英]php mysql update two tables/columns

我的表: blocked_peoplesmembers 在表blocked_peoplesips = 成員signup_ip中

假設我要阻止某人訪問我的網站。 我用用戶的IP阻止了用戶,它也更新了 1 禁止的成員表和列。

簡而言之,如果我更新表blocked_peoples(列ips),並且結果與成員表更新列中的成員(列signup_ip)相同/則被禁止1。

這是可能的 ? 如果是,sql的外觀如何?

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”標志,因此在更新中使用兩個表沒有任何意義。

腳步:

  • 首先將兩個表引擎都設為INNODB
  • 然后創建具有約束條件的外鍵引用ON UPDATE CASCADE ON DELETE CASCADE
  • parent_table(blocked_people).ips將被引用到子表(成員).signup_ip

有關更多信息,請參閱有關外鍵參考。

樂意效勞 :)

如果與members的關系是blocked_peoples我建議完全擺脫blocked_peoples表。 否則,您應該從members刪除被banned列,並特別依賴blocked_peoples檢查被禁止的IP。

示例更新:

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

示例選擇:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM