我在我的数据库中有一个表,其中包含两个字段,如UserID & MovieID。我在php中编写了一个函数,用于插入和更新表格,其中MovieID是可以包含许多由逗号分隔的值的字段,同样需要一个用于从表中删除值的函数,用于插入和更新的函数在表中的值如下所示:函数用于从数据库中的列中删除逗号分隔值使用php
<?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";
}
}
不要将CSV用于多对多的关系,请使用其他表格 - 尝试使用CSV会导致您遇到的确切问题。使用字段UserID和字段MovieID创建一个名为UserMovies的表。然后,您可以将每个关系存储在单独的行中,并且当您需要删除它们时,您可以“删除UserMovies WHERE UserID = x AND MovieID = y”。如果您仍然需要获取CSV列表,您可以'JOIN','GROUP BY'和'GROUP_CONCAT()' – DaveRandom
另请注意,'DELETE MovieIDs FROM tbl_user_watchlist WHERE UserID = x'无效 - 您无法删除单个列,只有一整行。如果你需要删除列的值,'UPDATE tbl_user_watchlist SET MovieIDs = NULL WHERE UserID = x' – DaveRandom
感谢您的建议@DaveRandom我尝试通过使用给定的查询..但在这种情况下,该行中的所有值正在被删除..我想从MovieIDs行只删除指定的值... –