简体   繁体   中英

Retrive data which is save in json format using mysql Query (codeigniter)

M saving the data in to db using json format such as example :

state_id city_id
["21"]   ["32,35,67"]

And now want to search using mysql query(codeigniter) where state_id = 21 AND city_id = 32 .

Can any one please help me, While googling i found one stuff "json_extract" but it's unable to know how to use it in query.

If I understood you correctly, this is the answer:

$json = '{"state_id": 21, "city_id": [32,35,67]}';
$decodedJson = json_decode($json, true);

/** @var $state_id int */
/** @var $city_id array */
extract($decodedJson);

$sql = printf("SELECT * FROM `table_name` WHERE `state_id` = %d AND `city_id` IN ( %s );", $state_id, join(',', $city_id));

echo $sql.PHP_EOL;

OUTPUT:

SELECT * FROM table_name WHERE state_id = 1 AND city_id IN ( 1,2,3 );

using JSON_SEARCH

select * from `table` where JSON_SEARCH(`city_id`, 'all', '32') IS NOT NULL;

for codeigniter, simply use the query function - as i cant found another prober built-in way in codeigniter to do this - :

$results = $this->db->query('select * from `table` where JSON_SEARCH(`city_id`, "all", "' . $city_id . '") IS NOT NULL;');

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM