使用php sql查询在col中搜索Json数组

时间:2018-04-30 10:50:54

标签: php json mariadb

我需要一些帮助。

目前我的mariadb设置为一列作为json数组。

我想从用户输入中搜索数组,然后将其与存储在数据库中的用户的名字和姓氏相结合。

在数据库中:

列:firstname,lastname和suburbs_i_cover(包含json数组)

ex:[" Pretoria"," Cape Town"," Garden Route"]

我想要搜索suburbs_i_cover并允许我组合名字和姓氏的sql语句。

到目前为止,我有这个:

<?php

//echo JUri::getInstance();

if (isset($_GET['category'])) {
$catetogry = $_GET['category'];
$name = $_GET['name'];

$db = JFactory::getDBO();
$query = $db->getQuery(true);
$query = ("SELECT * FROM #__jsn_users"); //not sure what goes here

$db->setQuery($query);
$results = $db->loadObjectList();


foreach($results as $obj) {

    $value = json_decode($obj->suburbs_i_cover);

    $value = array_filter($value, 'strlen');  //removes null values 
but leaves "0"
    $value = array_filter($value);            //removes all null 
values

    if (!empty($value)) {

    $value2 = $obj->firstname;
    $value3 = $obj->lastname;

    echo $value2 . ' '. $value3;
    //echo "<br>";
   // echo sizeof($value);
    echo "<br>";
    if (is_array($value)) {
        foreach ($value as $sub_value) {
            echo $sub_value;
            echo "<br>";
        }
    }

        echo "<br>";
        echo "<hr>";

} 

}
} 

1 个答案:

答案 0 :(得分:0)

我找到了一个有效的解决方案:

使用:in_array($ name,$ value)

<?php

//echo JUri::getInstance();

if (isset($_GET['category'])) {
$catetogry = $_GET['category'];
$name = $_GET['name'];

$db = JFactory::getDBO();
$query = $db->getQuery(true);
$query = ("SELECT * FROM #__jsn_users");
$db->setQuery($query);
$results = $db->loadObjectList();


foreach($results as $obj) {

    $value = json_decode($obj->suburbs_i_cover);

    $value = array_filter($value, 'strlen');  //removes null values 
but leaves "0"
    $value = array_filter($value);            //removes all null 
values

    if (in_array($name, $value)) {

        $value2 = $obj->firstname;
        $value3 = $obj->lastname;

        echo $value2 . ' '. $value3;


        echo "<br>";
        echo "<hr>";


    }

}
}


?>