我在我的數據庫中有一個表,其中包含兩個字段,如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行只刪除指定的值... –