php - 将序列化数组作为字符串进行搜索是否安全? (MySql查询)

标签 php mysql arrays serialization

我有一个这样的序列化数组

a:6:{i:0;i:6;i:1;i:65;i:2;i:56;i:3;i:87;i:4;i:48;i:5;i:528;}

例如我想做一个这样的mysql查询

$id_serialize = 6;
"SELECT id FROM table WHERE col LIKE '% i:" . $id_serialize . "; %'"

此查询是否可能导致冲突(例如重复数字等)?

是否有另一种更有效、更正确的方法来查找数组中的数字,而无需反序列化数组且无需循环?

最佳答案

这取决于您要存储的数据。对于整数,这是很有可能的。

a:6:{i:0;i:6;i:1;i:65;i:2;i:56;i:3;i:87;i:4;i:48;i:5;i:528;}

这实际上意味着:

a:6:{...} - array of 6 elements
i:0;i:6; - first element, id 0, value 6
i:1;i:65; - second element, id 1, value 65
and so on

如果您将得到 7 个元素的数组,第 7 个元素的定义将是:i:6;i:34 这将与 i:0;i:6;< 发生冲突。您的查询将返回 ID 为 6 的结果以及值为 6 的结果。

更多关于数组的剖析 http://www.php.net/manual/pl/function.serialize.php#66147

关于php - 将序列化数组作为字符串进行搜索是否安全? (MySql查询),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21580969/

相关文章:

java - 如何在 Eclipse mars 中为 php 打开 Java 透视图?

php - (PHP) 二维数组第一个元素为索引 "name"

javascript - 如何使用 jQuery Ajax 将 JavaScript 数组项加载到 MySQL 数据库

php - 带有异国情调连接的 Doctrine 2 分页器抛出错误

php - 如何对 WooCommerce 中的价格进行四舍五入?

mysql - 数据库设计按列表和公司对联系人进行分组

mySQL:选择 * 结合 UNIX_TIMESTAMP

MySQL避免重复值

java - Java 和 JNI (dll) 之间的索引越界异常

java - "Code too large"Java编译错误