gpt4 book ai didi

php - 使用php从数据库列中删除逗号分隔值的函数

转载 作者:行者123 更新时间:2023-11-29 08:53:15 28 4
gpt4 key购买 nike

我的数据库中有一个表,其中包含两个字段,例如 UserID 和 MovieID。我在 php 中编写了一个用于插入和更新表的函数,其中 MovieIDs 是可能包含许多用逗号分隔的值的字段,类似地需要一个用于从表中删除值的函数,我用于插入和更新的函数表中的值如下所示:

<?php

addmovietowatchlist(2,36546436);

function addmovietowatchlist($userid, $movieid)
{
$con=mysql_connect('localhost','username','password');
if(!$con)
{
die('could nt connect 2 the server');
}
mysql_select_db("database", $con);


$useriddb = mysql_query("select MovieIDs from tbl_user_watchlist WHERE UserID = ".$userid);
$count = mysql_num_rows($useriddb);
if($count>0)
{
$mids=mysql_fetch_assoc($useriddb);
$listarr=explode(",",$mids['MovieIDs']);

array_push($listarr, $movieid);
$finallist=implode(",",$listarr);

//update
$result = mysql_query("UPDATE tbl_user_watchlist SET MovieIDs = '".$finallist."' WHERE UserID = ".$userid);
if($result)
echo "updated sucessfully";
}
else{
//insert
$result = mysql_query("INSERT INTO tbl_user_watchlist (UserID,MovieIDs) values (".$userid.",'".$movieid."')");
echo "inserted successfully";
}

}
?>

现在,我需要编写一个函数,如果该行中已经插入了一个值,则从表中删除该值以及逗号...任何人都可以帮助我编写代码... 我尝试编写下面的代码,但它不起作用......请帮助我摆脱这个......

function deletemovietowatchlist($userid, $movieid)
{
$con=mysql_connect('localhost','username','password');
if(!$con)
{
die('could nt connect 2 the server');
}
mysql_select_db("database", $con);


$useriddb = mysql_query("select MovieIDs from tbl_user_watchlist WHERE UserID = ".$userid);
$count = mysql_num_rows($useriddb);
if($count>0){
$mids=mysql_fetch_assoc($useriddb);
$listarr=implode(",",$mids);
//echo $listarr;
//array_pop($listarr, $movieid);
$finallist=explode(",",$listarr);
echo $finallist;
$result = mysql_query("DELETE MovieIDs FROM tbl_user_watchlist WHERE UserID=".$userid);
if($result)
echo "deleted successfully";
}


}

最佳答案

正确的方法是将内容分成两个表。将保存当前表中的所有信息,但不保存逗号分隔的列表。相反,另一个表将有两列,一列指定它属于哪个列表(例如第一个表中的行的 ID...或者如果用户的列表不超过一个,则可以只使用 userid),并且然后是电影专栏。

也就是说,如果更改当前系统的工作量太大和/或您必须并决心坚持使用较差且低效的数据库结构,则可以在当前设置中启用此功能。基本上,您需要找到对您关心的 movieid 的所有引用,然后手动调整与这些匹配项对应的列表,然后使用新列表更新所有这些行。这是大量额外的代码并浪费大量处理时间(以至于随着应用程序的增长,它可能成为应用程序的主要瓶颈),但这是可能的。

进行调整的最简单方法是对现有列表进行字符串替换。因此,一旦选择了当前列表,请执行以下操作:

$newList = str_replace($movie_id_to_delete.",", "", $oldList);

$result = mysql_query("UPDATE tbl_user_watchlist SET MovieIDs = '".$newList."' WHERE MovieIDs ='".$oldList."' AND UserID = ".$userid);

根据您的实现,检查 $newList 是否为空并删除整行(而不是像上面那样更新 MovieID)可能是有意义的。

关于php - 使用php从数据库列中删除逗号分隔值的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10587264/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com