【问题标题】:Checking if values exists with one statement用一个语句检查值是否存在
【发布时间】: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


【解决方案1】:

根据上述问题,我的脚本确实有效。但是,它会计算存在的数量,如果不存在,那么我会按照 Madan Sapkota 的建议进行检查。

【讨论】:

    【解决方案2】:

    试试这个:

    "SELECT count(*) total, * FROM tags WHERE tag IN ($qMarks) GROUP by tag HAVING total > 0"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-15
      • 2017-08-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多