Php 在一组其他值中查找一个值
如果我有一个值,并且我想知道它是否在特定表单元格中的一组值中,我知道我可以使用FIND_in_setPhp 在一组其他值中查找一个值,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运行一些循环
$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想要实现的目标。早上好,山姆!