我希望对存储在json_encode
数据库中的值json完成“HAVING”,这个值是波斯语,但是没有为它做“HAVING”,如何修复它?
row_s
如下:
row_s
id 1:["All5","\u0648\u06cc\u0632\u0627 8"]
row_s
id 2:["All5","\u0648\u06cc\u0632\u0627 7"]
row_s
ID 3:["All5","\u0648\u06cc\u0632\u0627 6"]
这是我的PHP代码:(输出它是:没有)
$val = 'ویزا 8';
$query = $this->db->query('SELECT * FROM table HAVING row_s LIKE "%' . $val . '%"');
if ($query->num_rows() > 0) {
foreach ($query->result() as $val) {
echo $val->name . '<br>';
}
} else {
echo 'There is not';
}
更新 可以将数值为“$ val”的数字或数据库中的值为json的拉丁字,但不能用于波斯语。
例如,以下代码有输出,并且是$ query-&gt; num_rows()= 3.
$val = 'All5';
$query = $this->db->query('SELECT * FROM table HAVING row_s LIKE "%' . $val . '%"');
if ($query->num_rows() > 0) {
foreach ($query->result() as $val) {
echo $val->name . '<br>';
}
} else {
echo 'There is not';
}
答案 0 :(得分:0)
您已将json字符串存储到数据库中。这样做只是将文本存储到数据库中。
SQL是一种查询(以及更多)数据库的语言,例如从数据库中选择文本字段。
但是SQL并不知道json,尤其是LIKE关键字无法解析你的json,然后在它上面应用它的常规,基于文本的模式匹配。
您需要以纯文本(跨多列)或存储数据,您需要查询所有字段,然后使用PHP搜索数据。
第三种方法是扩展数据库服务器以理解json并提供一个函数,允许您搜索类似于LIKE的json编码数据。
然而,实际上你刚刚在数据库中创建了一个数据库,其价格就像你现在面临的问题一样,选择你想要的数据。