Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在一组其他值中查找一个值_Php_Mysql - Fatal编程技术网

Php 在一组其他值中查找一个值

Php 在一组其他值中查找一个值,php,mysql,Php,Mysql,如果我有一个值,并且我想知道它是否在特定表单元格中的一组值中,我知道我可以使用FIND_in_set $myStr = 'b'; // myVals column contains 'a,b,c,d' mysql> SELECT FIND_IN_SET(".$myStr.", myVals); -> 2 但是如果我有一个字符串的值,我需要检查它们是否在集合中呢 $myStr = 'f,g,b,d'; 有没有一种方法可以直接在查询中执行,或者我需要用PHP运行一些循环

如果我有一个值,并且我想知道它是否在特定表单元格中的一组值中,我知道我可以使用FIND_in_set

$myStr = 'b';

// myVals column contains 'a,b,c,d'

mysql> SELECT FIND_IN_SET(".$myStr.", myVals);
    -> 2 
但是如果我有一个字符串的值,我需要检查它们是否在集合中呢

$myStr = 'f,g,b,d';

有没有一种方法可以直接在查询中执行,或者我需要用PHP运行一些循环?

绝对是实现目标的一种方法。

我认为您必须在
中选择
集中查找。
$myStr='f,g,b,d'
的结果是:

SELECT (
  FIND_IN_SET('f', 'a,b,c,d') OR
  FIND_IN_SET('g', 'a,b,c,d') OR
  FIND_IN_SET('b', 'a,b,c,d') OR
  FIND_IN_SET('d', 'a,b,c,d')
)
这在PHP中应该很容易实现,而且仍然是一个查询


但它不会返回任何索引。只是一个傻瓜。如果需要第一个匹配索引,则需要大量If或CASE。

查询的顺序不正确

您使用的是
FIND_IN_SET(“.$myStr.”,myVals)
,它应该位于相反的位置

FIND_IN_SET(myVals, ".$myStr.")
  • 列,要搜索的字符串
您可以将以下内容与
mysqli\u num\u rows()
结合使用

旁注:
column_x
将是您希望查询的列

假设有一个
mysqli\uu
数据库连接库:

$myStr = 'f,g,b,d';

$query = mysqli_query($connection, "

    SELECT column_x FROM table 
    WHERE FIND_IN_SET(column_x, '".$myStr."')

 ");

$num_row = mysqli_num_rows($query);

    if($num_row >0)
        {
           echo "It exists.";
        } 

        else
        {
           echo "It does not exist.";
        }

参考资料:


我现在无法测试它,但请尝试:
选择在集合中查找((选择'f','g','b','d'),'a,b,c,d')
如何
$sql=“选择在集合中查找('b','“$myStr”);”
@ott有时该字符串只能包含一个值,没有逗号。一个只包含一个元素的集合有什么错?@ott,我想我们讨论的是不同的事情。我已经更新了原始端口以澄清。哦,我只需要知道它是否存在。不需要索引。不过我对确切的用例很好奇。我无法想象你不是在查询一张桌子。如果你正在查询一个表,连接可能更合适……我将一些值存储在cookie中,然后需要与db中的记录进行比较。是的,我正准备返回到这个@Fred-ii-却发现你已经把它钉在了头上。早上好,拉尔夫@杰布兰查德-啊,我不知道你会回来,因为我注意到你的答案在我回答的时候仍然被删除了。希望这就是OP想要实现的目标。早上好,山姆!