【发布时间】:2013-02-24 03:09:03
【问题描述】:
我有一个值列表,我想用一条语句检查 MySQL 中是否存在任何值。
$tags = "VALUE-IN-MySQL,DOESNT-EXIST1,DOESNT-EXIST2";
$tagArray = explode(",", $tags);
$qMarks = str_repeat('?,', count($tagArray) - 1) . '?';
$tagsCheck = $dbh->prepare("SELECT * FROM tags WHERE tag IN ($qMarks)");
$tagsCheck -> execute($tagArray);
echo $tagsCheck -> rowCount();
这样做的问题是,如果语句中至少存在一个值,它会回显 1,但即使组中只存在一个值,我也不想否认该语句,但其他值不存在。
这可能吗?
【问题讨论】:
-
没有很清楚地关注这个问题。你说的是“AND” sql 语句吗?在哪里标记 LIKE '?并标记像“?” ...还是别的什么?
-
@i-- 我将有一个逗号分隔值的列表,无论它有 3 个值、4 个值还是 5 个值。无论哪种方式,它都会进入一个字符串,在我的情况下我正在变成一个数组。如果 mysql 中不存在字符串或数组中的这些值之一,我想检查 MySQL。
-
你不应该像那样使用简单的爆炸。这看起来像 CSV 数据,因此您应该改用 str_getcsv()。考虑一下如果其中一个值自然包含逗号会发生什么:
"Hello, Newman",Jerry,Elaine。你最终会搜索 4 个项目,而不是 3 个。
标签: php mysql pdo prepared-statement