[英]Fastest way to check array items existence in mySQL table
用戶編寫一系列標簽(分開)並發布表單。
我建立了一個包含標簽的數組,並使用array_unique() php函數刪除了重復對象 。
我正在考慮這樣做:
有沒有更快或更理想的方式來做到這一點?
我希望人們可以對此方法發表評論。 直覺告訴我,這可能不是解決問題的最佳方法,但是你們都怎么想呢?
不必對數據庫進行額外的調用以查找重復項,而只需在數據庫中添加唯一約束,以使標簽不能插入兩次。 然后在添加新標簽時使用INSERT IGNORE...
在插入新項目的同時,此方法將忽略由於重復導致的錯誤。
您可以調用implode( ',' $array )
然后使用IN
SQL構造檢查數據庫中是否存在行。
例:
<?php
$arr = ...
$sql = 'SELECT COUNT(*) FROM table WHERE field IN ( ' . implode( ',', $arr ) . ' );';
$result = $db->query( $sql );
?>
$tags = array('foo', 'bar');
// Escape each tag string
$tags = array_map('mysql_real_escape_string', $tags, array($sqlCon));
$tagList = '"' . implode('", "', $tags) . '"';
$qs = 'SELECT id FROM tag_list WHERE tag_name IN (' . $tagList . ')';
我不知道它是否更快,但是您可以使用mysql的IN
。 我想你得試試看。
您可以建立一個大查詢並一次性完成,而不是進行許多小查詢:
SELECT DISTINCT tag
FROM my_tags
WHERE tag in ( INPUT_TAGS )
只需將INPUT_TAGS建立為以逗號分隔的列表,並確保您正確地轉義了每個元素以防止SQL注入攻擊。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.