не удается отобразить результат массива

#php #mysql #codeigniter

#php #mysql #codeigniter

Вопрос:

Я получил следующий массив. теперь я получаю отдельные записи, но когда есть записи их массива, это не работает. Я пробовал с условием OR, но это не работает.

 $this->db->get_where('genre',array('genre_id'=>$row['genre_id']))->row()->name;
//I get Follwoing Records
Array(
[0] => Array
    (
        [movie_id] => 7
        [title] => Raaz
        [genre_id] => 8 // it display the name
        [actors] => []
        [trailer_url] => https://drive.google.com/
    )
[1] => Array
    (
        [movie_id] => 8
        [title] => Tribute
        [genre_id] => ["2","5","20"] // it doesn't display the name
        [actors] => []
        [trailer_url] => https://drive.google.com/
    )
  

Я попробовал следующий код

 $this->db->get_where('genre',array('genre_id'=>$row['genre_id']))->row()->name;
  

приведенный выше код работает для индекса 0, но он не работает с массивом индексов 1

Комментарии:

1. проверьте функцию or_where_in()

2. @Mohammad: но это не будет работать с get_where,

Ответ №1:

Вы можете использовать where_in , но вы не можете использовать его с get_where , вам нужно использовать alternate здесь вместо get_where :

Пример:

Вы можете чередовать здесь, как:

 $this->db->select('name');
$this->db->from('genre');
if(is_array($row['genre_id'])){ // if result is in array
    $this->db->where_in('genre_id',$row['genre_id']);    
}
else{ // for single record.
    $this->db->where('genre_id',$row['genre_id']);
}
$query = $this->db->get();
print_r($query->result_array()); // will generate result in an array
  

Редактировать:

После отладки вы получаете это значение ["2","5","20"] в виде строки, поэтому вы можете изменить этот код:

 $genreID = intval($row['genre_id']); // 
if($genreID > 0){ 
    $this->db->where('genre_id',$row['genre_id']);    
}
else{ 
   $genreID = json_decode($row['genre_id'],true);
   $this->db->where_in('genre_id',$genreID);    
}
  

Конструктор запросов CI

Комментарии:

1. он отлично работает с отдельными данными, но не работает со значениями массива

2. @nadygold: что ты получаешь?

3. для single я получаю Array ([0] => Array ( [name] => Comedy ) ) но в array я получаю пустое

4. я просто печатаю запрос, который я получаю следующим образом для выбора массива name ИЗ genre , ГДЕ genre_id = ‘[«2″,»5″,»20»]’

5. Спасибо, чувак, ты мне очень помог