更新数组列表中的值并将其应用于所选数据php的所有相同值

时间:2017-10-23 09:16:50

标签: php mysql arrays

所以我将展示我的表格样本,以便更容易看到情况。这是节目表。

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)
        {
        ////
        }
}

3 个答案:

答案 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}}