我有一个表memberships
。
我为我的用户提供了一个文本框,其中有memberships
中的当前电子邮件列表。他们可以编辑列表。一旦他们发回列表,我想更新成员资格,使其仅包含用户提供的列表中的电子邮件。
我能想到的最好的方法就是删除所有电子邮件,然后将整个列表重新插入。有没有更好的方法?
我现在在做什么:
$mysql->query('DELETE FROM memberships');
$userEmails = explode('\n', $_POST['users']);
foreach ($userEmails as $email)
$mysql->query('INSERT INTO memberships (email) VALUES (?)', $email);
最佳答案
这样的东西可能就是您正在寻找的东西(未经测试)。在查询中使用之前不要忘记转义您的输入以防止 sql 注入(inject)。
$userEmails = explode("\n", mysql_real_escape_string($_POST['users']));
$mysql->query("DELETE FROM `memberships` WHERE `email` NOT IN ('".implode("','", array_values($userEmails))."');");
$mysql->query("REPLACE INTO `memberships` (`email`) VALUES ('".implode("'),('", array_values($userEmails)).");");
关于php - 维护用户列表 - MySQL/PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8812888/