所以我将展示我的表格样本,以便更容易看到情况。这是节目表。
ProgID | ProgramName | SendNotifyToEmail
-------------------------------------------------------------------------------
1. | A | a@gmail.com, b@gmail.com, c@gmail.com, d@gmail.com
-------------------------------------------------------------------------------
2. | B | a@gmail.com, b@gmail.com, c@gmail.com
-------------------------------------------------------------------------------
3. | C | a@gmail.com, b@gmail.com, c@gmail.com
--------------------------------------------------------------------------------
4. | D | e@gmail.com, f@gmail.com, g@gmail.com
--------------------------------------------------------------------------------
5. | E | d@gmail.com, e@gmail.com, f@gmail.com
---------------------------------------------------------------------------------
6. | F | b@gmail.com, e@gmail, f@gmail
---------------------------------------------------------------------------------
所以我尝试选择
SELECT * from program where SendNotifyToEmail like '%d@gmail.com%'
并希望对相关值应用更新。
如何将所有d@gmail.com的更新应用于j@gmail.com,每个都使用explode。
$query ="SELECT * from program where SendNotifyToEmail like '%d@gmail.com%'";
$result = mysql_query($query);
while($line=mysql_fetch_array($result, MYSQL_BOTH))
{
$listmail = explode(",", trim($line["SendNotifyToEmail"]).',');
foreach($listmail as $email=>$i)
{
////
}
}
答案 0 :(得分:1)
如果它不是一个经常完成的程序,或者你的数据库足够小,你可以用一个查询来完成。
UPDATE program SET SendNotifyToEmail = REPLACE(SendNotifyToEmail, 'd@gmail.com', 'j@gmail.com');
答案 1 :(得分:0)
对我来说是改变数据库结构的解决方案。 SendNotifyToEmail
应包含保存在单独表格中的电子邮件ID,或者您可以拥有包含ProgramName
的表格,包含电子邮件和联接表格的表格。
答案 2 :(得分:0)
您可以使用两个表格 使用外键将它们链接在一起
第一张表:EmailId | Prog_ForignId | SendNotifyToEmail
第二张表:{{1}}