Поиск массива Json внутри col с помощью php sql запроса - PullRequest
0 голосов
/ 30 апреля 2018

Мне нужна помощь, пожалуйста.

В настоящее время мой mariadb настроен с одним столбцом в виде массива json.

Я хотел бы найти массив из входных данных пользователя, а затем объединить его с именем и фамилией пользователя, сохраненной в базе данных.

В базе данных:

Столбцы: имя, фамилия и suburbs_i_cover (содержащие массив json)

например: ["Претория", "Кейптаун", "Садовый маршрут"]

Мне нужен оператор sql, который будет выполнять поиск в suburbs_i_cover и позволять мне комбинировать имя и фамилию.

Пока у меня есть это:

<?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 голосов
/ 30 апреля 2018

Я получил рабочее решение:

Для использования: 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>";


    }

}
}


?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...