【发布时间】:2016-04-22 09:34:20
【问题描述】:
我正在尝试在 Codeigniter 中运行以下示例查询
SELECT users.id, users.first_name, users.last_name, users.game_id
FROM users
WHERE users.id NOT IN
(SELECT banned.users_id FROM banned) AND game_id = '1'
ORDER BY last_name
现在这在 MySQL 中可以正常工作,但是我需要以下是变量(game_id、'1'、last_name),以便我可以执行以下操作
型号
function get_where_custom_ordered_checked($col, $value, $order_by) {
$query = $this->db->query('
SELECT users.id, users.first_name, users.last_name, users.game_id
FROM users
WHERE users.id NOT IN
(SELECT banned.users_id FROM banned) AND $col = $value
ORDER BY $order_by
');
return $query;
}
显然这不起作用,并且查询无法识别该变量。我将如何实现这一目标?我也尝试过使用 SET,如下所示(但仍然无济于事)。
型号
function get_where_custom_ordered_checked($col, $value, $order_by) {
$query1 = 'SET @col = '$col', @value = '$value', @order_by = '$order_by'';
$this->db->query($query1);
$query2 = $this->db->query('
SELECT users.id, users.first_name, users.last_name, users.game_id
FROM users
WHERE users.id NOT IN
(SELECT players_phases.players_id FROM players_phases) AND @col = @value
ORDER BY @order_by
');
$query = $this->db->query($query2);
return $query;
}
现在我尝试将其分解以使用 Codeigniter Active Record 类,但我不知道如何将 where_not_in() 包含在 where() 中,尤其是因为我需要针对 NOT IN 查询第二个表 - 与 Active Records CI 文档中显示的 where_not_in() 示例不同,它针对同一个表。
任何建议或帮助将不胜感激。
非常感谢。
【问题讨论】:
-
可以详细解释一下你的成就吗?
-
你也可以使用字符串插值。如果您需要在字符串中读取变量,请使用双引号。
标签: php mysql codeigniter