Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.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 如何为select数据在任何序列化字段的数组键上添加where子句?_Php - Fatal编程技术网

Php 如何为select数据在任何序列化字段的数组键上添加where子句?

Php 如何为select数据在任何序列化字段的数组键上添加where子句?,php,Php,我在序列化数组字段的键上添加where子句(我使用的是PHP/MySQL)。但是SQL不工作并且显示错误。 显示错误为:“分析错误:语法错误,意外的“雇主”(T_常量_封装的字符串)在…..” 系列化数组是:(保存在数据库表中)a:2:{s:8:“雇主”;s:9:“sanjayEMP”;s:7:“部门”;s:10:“生产”} 我的CodeIgniter SQL是: $this->db->select("*"); $this->db->select("emply

我在序列化数组字段的键上添加where子句(我使用的是PHP/MySQL)。
但是SQL不工作并且显示错误。

显示错误为:
“分析错误:语法错误,意外的“雇主”(T_常量_封装的字符串)在…..”

系列化数组是:(保存在数据库表中)
a:2:{s:8:“雇主”;s:9:“sanjayEMP”;s:7:“部门”;s:10:“生产”}

我的CodeIgniter SQL是:

   $this->db->select("*");
   $this->db->select("emplyee_details");
   $this->db->where("status",1);
   $this->db->where("ValueDetails","REGEXP '.*"Employer";s:[0-9]+:"jack".*'");
   $this->db->get()->result_array();
这里,
ValueDetails是数据库表中序列化数组的字段。和
雇主是数据库表中序列化字段的数组键

如果有人对如何在任何特定字段的数组键上添加where子句有很好的想法。请给我一些建议


谢谢

也许这行应该是这样的,您使用反斜杠来转义双引号,并且错误地放置了REGEXP关键字:

$this->db->where("ValueDetails REGEXP",".*\"Employer\";s:[0-9]+:\"jack\".*");

感谢您的回复,但添加反斜杠后,问题没有得到解决。数据库表中有记录,但SQL的输出为空。当我删除where条件时,再次显示记录。我选择了我的答案,因为在文档中,运算符放在第一个参数中。你能试试吗?谢谢,@Damien,当操作员被放在第一个参数中时,现在工作正常。很高兴听到这个消息!你能验证这个答案吗?谢谢最好的方法是将这些信息保存在其他列中,如雇主名称和部门。对它的请求将更容易、更优化。