gpt4 book ai didi

codeigniter - 代码点火器 - 从 where_in 中删除单引号

转载 作者:行者123 更新时间:2023-12-04 22:47:59 29 4
gpt4 key购买 nike

我有两个疑问:

$genres = $this->db->select('Group_Concat(intGenreId) strDJGenres')
->from('tblDJGenres')
->where('intDJId', $this->session->userdata('non_admin_userid'))
->get()
->row();

$results = $this->db->select('tblTracks.*, tblGenres.strName as strGenreName')
->from('tblTracks')
->join('tblGenres', 'tblTracks.intGenreId = tblGenres.intGenreId', 'left')
->where_in('tblTracks.intGenreId', $genres->strDJGenres)
->get()
->result();

第一个查询返回一个字符串,例如

'1,2,3,4,8,6,5,7,45,66'



我在第二个查询的 where_in 子句中使用了它。问题在于,使用此字符串,它正在编写如下 SQL:
SELECT `tblTracks`.*, `tblGenres`.`strName` as strGenreName FROM (`tblTracks`) LEFT JOIN `tblGenres` ON `tblTracks`.`intGenreId` = `tblGenres`.`intGenreId` WHERE `tblTracks`.`intGenreId` IN ('1,2,3,4,8,6,5,7,45,66') 

加上引号,它被视为单个值。我怎样才能让第二个查询执行我想要的? IE
.... where `tblTracks`.`intGenreId` IN (1,2,3,4,8,6,5,7,45,66) 

最佳答案

可以将多个值传递给 where_in条款作为 array .

可以使用 trim() 删除字符串开头和结尾的引号。 :

$dj_genres = trim($genres->strDJGenres, "'");

然后可以将此字符串转换为 字符串数组 , 传递给 where_in第二个查询的子句。
$dj_genres_array = explode(",", $dj_genres);

或者,如果您需要 整数数组 :
$dj_genres_int_array = array_map('intval', $dj_genres_array);

您可以将结果数组添加到第二个查询中:
// ...    
->where_in('tblTracks.intGenreId', $dj_genres_array)
// ...

或者:
// ...    
->where_in('tblTracks.intGenreId', $dj_genres_int_array)
// ...

关于codeigniter - 代码点火器 - 从 where_in 中删除单引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15835172/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com