我有类似的查询:
SELECT username
FROM users
WHERE locationid IN
(SELECT locationid FROM locations WHERE countryid='$')
$是我从最终用户获得的值。
如何在CodeIgniter中运行此查询?我在CodeIgnite的用户指南中找不到解决方案。
非常感谢您的回答!
问候!
答案 0 :(得分:7)
看here。
基本上你必须做绑定参数:
$sql = "SELECT username FROM users WHERE locationid IN (SELECT locationid FROM locations WHERE countryid=?)";
$this->db->query($sql, '__COUNTRY_NAME__');
但是,就像Mr.E说的那样,使用连接:
$sql = "select username from users inner join locations on users.locationid = locations.locationid where countryid = ?";
$this->db->query($sql, '__COUNTRY_NAME__');
答案 1 :(得分:5)
另外,要注意 - Active Record Class也有$this->db->where_in()
方法。
答案 2 :(得分:3)
请注意,这些解决方案使用Code Igniter Active Records Class
此方法使用您想要的子查询,但您应该自己清理$countryId
!
$this->db->select('username')
->from('user')
->where('`locationId` in', '(select `locationId` from `locations` where `countryId` = '.$countryId.')', false)
->get();
或者这种方法可以使用联接进行,并为您清理数据(推荐)!
$this->db->select('username')
->from('users')
->join('locations', 'users.locationid = locations.locationid', 'inner')
->where('countryid', $countryId)
->get();
答案 3 :(得分:2)
我认为你可以创建一个简单的SQL查询:
$sql="select username from user where id in (select id from idtables)";
$query=$this->db->query($sql);
然后你可以正常使用它。