Php mysql搜索包含数组的列
当我搜索结果时,我发现很多答案是mysql包含了指针,PHP提供了草垛。。。任意数组 我需要另一种方式。我的表有一个名为Php mysql搜索包含数组的列,php,mysql,Php,Mysql,当我搜索结果时,我发现很多答案是mysql包含了指针,PHP提供了草垛。。。任意数组 我需要另一种方式。我的表有一个名为supervisor\u id的列,其中包含这样一个数组 a:2:{i:0;i:9999;i:1;i:1;} 在我的PHP代码中,我有一个保存在变量中的值$supervisor 如何在“主管ID”列中搜索$supervisor 我想大概是 从my_表中选择*,其中$supervisor位于“supervisor_id”中但这不起作用 更新 我刚刚发现,如果表列包含类似9999,
supervisor\u id
的列,其中包含这样一个数组
a:2:{i:0;i:9999;i:1;i:1;}
在我的PHP代码中,我有一个保存在变量中的值<代码>$supervisor
如何在“主管ID”列中搜索$supervisor
我想大概是
从my_表中选择*,其中$supervisor位于“supervisor_id”中
但这不起作用
更新
我刚刚发现,如果表列包含类似9999,1,5678
的列表,而不是数组<代码>a:2:{i:0;i:9999;i:1;i:1;}
这会有用的
从my_表中选择*,在该表中查找设置($supervisor,supervisor\u id)
当它是一个数组时,搜索它的等价物是什么?您可以使用以下方法:
从my_表中选择*,其中的主管ID类似于“%i:$supervisor;%”代码>
如果PHP中$supervisor
的值为9,则实际查询将为:
从my_表中选择*,其中的主管ID类似于“%i:9;%”代码>
并将匹配如下所示的所有序列化数组:
a:…:{;i:9;…;}
假设supervisor\u ID列只包含PHP序列化数组,这应该可以正常工作。您可以尝试“从my\u表中选择*,其中类似“%”的“supervisor\u ID”$监督人。“%”
。LIKE
操作符将搜索模式,%
充当匹配0个或更多字符的通配符。REGEXP
操作符也可以工作,因为这是一个常规的事情,您需要规范化数据,以这种方式存储数据会导致各种困难“i”是静态字符串,从序列化数组开始,假设$supervisor都是整数,您的数组将始终具有“i”如果$supervisor
是9
,您的代码也将匹配94
或967
或…这很好,但您的更新代码不正确,因为它是一个字符串值,您需要使用FIND_IN_SET
,就像OP在编辑问题时所做的那样。