php - mysql 在序列化数组中选择查询

标签 php mysql arrays

我将项目列表存储在数据库字段内的序列化数组中(我使用的是 PHP/MySQL)。

我想要一个查询来选择包含数组中这些项目中的特定一项的所有记录。

类似这样的事情:

select * from table WHERE (an item in my array) = '$n'

希望这是有道理的。

任何想法将不胜感激。

谢谢

最佳答案

正如 GWW 在评论中所说,如果您需要以这种方式查询内容,您确实应该考虑将此数据存储为大字符串(这就是您的序列化数组)之外的其他内容。

如果这是不可能的(或者你只是懒),你可以利用序列化数组只是一个大字符串这一事实,并找出一个 LIKE 子句来查找匹配的记录。 PHP 序列化数据的方式很容易理解(提示:这些数字表示事物的长度)。

现在,如果您的序列化数组相当复杂,这会很快崩溃。但如果它是一个平面数组,你应该能够做到。

当然,您将使用 LIKE '%...%',因此您不会从任何索引中获得任何帮助,并且性能会非常差。

这就是为什么人们建议您以某种标准化的方式存储数据(如果您需要在数据“内部”进行查询)。

关于php - mysql 在序列化数组中选择查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40489143/

相关文章:

javascript - 表单输入(电话号码)到电子邮件

php - Yii 2.0 AJAX 请求的 CSRF 验证

php - 根据日期变量检索特定行?

c - 在不使用结构的情况下添加多项式的数量

php - 这是在两种不同类型的数组之间进行转换的最佳方法吗?

php - 在 CodeIgniter 中用别名值(文章标题)替换 URI 参数(文章 ID)

PHP - 如何判断页面是否被使用

php - MYSQL 忽略查询中的 AND 子句

sql - 这个查询该怎么做呢?

java - 如何在 Java 中创建通用数组列表?