【发布时间】:2017-05-21 22:12:38
【问题描述】:
我有一个名为 users 的表,其中包含一个名为 user_subs 的列。看起来像这样。
在 user_subs 中我存储了特定的用户会话用户名。假设这个特定的用户名为 James。
现在我将如何遍历特定的 user_subs 来寻找“James”并将他从特定的 user_subs 中删除而不删除所有其他名称。
这是我目前所拥有的,唯一的问题是,它删除了 user_subs 中的所有用户名,而不仅仅是“James”。
if(isset($_GET['p_id'])) {
$the_post_id = $_GET['p_id'];
$the_post_author = $_GET['author'];
}
if(isset($_POST['delete_sub'])) {
$username = $_SESSION['username'];
$query = "SELECT user_subs FROM users WHERE username = '{$username}' ";
$select_users_by_id = mysqli_query($connection, $query);
while ($row = mysqli_fetch_array($select_users_by_id)) {
$user_subs = explode(',', $row['user_subs']);
foreach($user_subs as $out) {
$query = "UPDATE users SET user_subs = null WHERE username = '{$the_post_author}' ";
$unsubscribe_user = mysqli_query($connection, $query);
echo "Unsubscribed";
}
}
}
这只是在测试中,准备好的声明将在上线前使用
感谢您的宝贵时间。
【问题讨论】:
-
您要覆盖该行还是删除它?
-
理想情况下,您可能会将用户 subs 放在另一个表中,并且只删除特定的人。否则,您必须解析该数据,删除不需要的数据并将其余数据放回原处。
-
@tereško 好吧,如果您使用 delete,它将删除整个列,这就是您必须使用 update 和 null 的原因
-
您是否检查过此列可以包含
NULL值?有可能,该表是在user_subs列上使用NOT NULL约束创建的。 -
您的第一个查询完全没有必要。其实适得其反!