用户编写一系列标签(,分开)并张贴表格 我使用 array_unique() php函数构建一个包含标签和删除dupes的数组。
我正在考虑这样做:
是否有更快或更多OPTIMUM 这样做?
答案 0 :(得分:4)
我希望人们可以评论这种方法。直觉告诉我它可能不是最好的方法,但你们都有什么想法?
不要额外调用DB来查找重复项,只需在DB中添加一个唯一约束,这样就不能插入两次标记。然后在添加新标记时使用INSERT IGNORE...
。此方法将忽略重复导致的错误,同时插入新项目。
答案 1 :(得分:2)
您可以调用implode( ',' $array )
,然后使用IN
SQL构造来检查数据库中是否存在现有行。
示例:
<?php
$arr = ...
$sql = 'SELECT COUNT(*) FROM table WHERE field IN ( ' . implode( ',', $arr ) . ' );';
$result = $db->query( $sql );
?>
答案 2 :(得分:1)
$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 . ')';
答案 3 :(得分:0)
我不知道它是否更快,但您可以使用mysql's IN
。我想你必须尝试。
答案 4 :(得分:0)
你可以建立一个大的查询并一次完成,而不是许多小查询:
SELECT DISTINCT tag
FROM my_tags
WHERE tag in ( INPUT_TAGS )
只需将INPUT_TAGS构建为以逗号分隔的列表,并确保正确转义每个元素以防止SQL注入攻击。