6
我看到了這個問題:how to save tags(keywords) in database?如何使用PHP將標籤/關鍵字從數組保存到數據庫?
如何構建數據庫的好答案。但是,哪種方式最好在PHP中進行保存過程?處理添加和刪除的過程。
關鍵字以數組形式發佈。
編輯: 當前的代碼如下所示:
<?php
$new = explode(',', $_POST['tags']);
$query = mysql_query("SELECT * FROM pages_tags WHERE page_id = '".$page_id."'") or die(mysql_error());
while ($row = mysql_fetch_array($query))
{
$old[] = $row['tag'];
}
$tags_to_add = array_diff($new, $old);
$tags_to_remove = array_diff($old, $new);
if (is_array($tags_to_add))
{
foreach ($tags_to_add as $add_tag) { $insert_tags[] = "('".$add_tag."', '".$page_id."')"; }
$sql_insert_tags = "INSERT INTO pages_tags (tag, page_id) VALUES ".implode(',', $insert_tags);
mysql_query($sql_insert_tags) or die(mysql_error());
}
if (is_array($tags_to_remove))
{
foreach ($tags_to_remove as $remove_tag) { $delete_tags[] = "('".$remove_tag."')"; }
$sql_delete_tags = "DELETE FROM pages_tags WHERE page_id = '".$page_id."' AND tag IN (".implode(',', $delete_tags).")";
mysql_query($sql_delete_tags) or die(mysql_error());
}
?>
@zerkms這個答案真的很有趣。所以我開始將數據庫中的帖子標籤和標籤保存爲每個數組?然後首先從數據庫運行一個while循環,並使用'$ tags_to_add'進行匹配,並將它們添加到數據庫中不存在的數據庫中。然後做一個新的數據庫while循環來匹配標籤去除? – 2011-05-21 09:47:03
@Peter Westerlund:批量插入:'INSERT INTO表(字段)VALUES('val1'),('val2'),...'。刪除'DELETE FROM table WHERE field IN('val1','val2',...)'。所以你只需要2個查詢。但首先你需要查詢所有**現有的**標籤('$ old'),並用'$ new'來區分它 – zerkms 2011-05-21 09:50:44
@zerkms是否有必要將所有表的'posts','tags'和'post_tags '?它破壞了一點,因爲我希望表格「標籤」中的標籤行自動消失,如果沒有該標籤留下的帖子。 – 2011-05-21 11:25:47