在json上还有什么地方?

时间:2011-10-20 10:20:12

标签: php mysql json codeigniter

我希望对存储在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';
} 

1 个答案:

答案 0 :(得分:0)

您已将json字符串存储到数据库中。这样做只是将文本存储到数据库中。

SQL是一种查询(以及更多)数据库的语言,例如从数据库中选择文本字段。

但是SQL并不知道json,尤其是LIKE关键字无法解析你的json,然后在它上面应用它的常规,基于文本的模式匹配。

您需要以纯文本(跨多列)存储数据,您需要查询所有字段,然后使用PHP搜索数据。

第三种方法是扩展数据库服务器以理解json并提供一个函数,允许您搜索类似于LIKE的json编码数据。

然而,实际上你刚刚在数据库中创建了一个数据库,其价格就像你现在面临的问题一样,选择你想要的数据。