ci mysql in_CI数据库操作 如何写where 中的 where_in | 网游世界

实际开发中,遇到一个问题,像下面的代码:/* 获取明细列表 */

public function getMoneyList($whereArr, $offset=0, $perpage=10, $order='', $orderVal='') {

$result = ARRAY();

$this->CI->db->select('id,money,add_time,user_id,user_account,category_id,note,score_id,update_time');

if (!empty($order) && !empty($orderVal) ) $this->CI->db->order_by($order, $orderVal);

if (!empty($whereArr)) $this->CI->db->where($whereArr);

if (!empty($perpage)) $this->CI->db->limit($perpage, $offset);

$query = $this->CI->db->get('om_detail');

if ($query->num_rows() == 0) return $result;

foreach ($query->result_array() as $row)

$result[$row['id']] = $row;

return $result;

}

这是一个获取明细列表的方法,只要传递条件数组、偏移量、分页、及排序和值就可以将所需要的明细返回过来。

现在有一个问题是,我想获取多个category_id;我不知道怎么取了。

我查询了CI手册里面的,可以使用where_in,但是,不知道怎么与这个方法相结合。

期望大家指点下。

另外,手册上是,可以使用

自定义 key/value 方法: 你可以在第一个参数中包含一个运算符,以便控制比较:$this->db->where('name !=', $name);

$this->db->where('id

// 生成: WHERE name != 'Joe' AND id < 45

上面介绍了,大于、小于之类的“隐含式操作符”,能不能使用IN呢?怎么写?

感谢,一叶扁舟的帮助:

$whereArr = array(‘category_id’=>array(ID)……)以数组形式写入whereArr

函数中判读ID个数

为1的话就直接上文中操作

>1 先where_in(‘category_id’,$whereArr) 然后unset掉$whereArr[‘category_id’],再where($whereArr)

修改后的:foreach ($whereArr as $key => $val) {

if (is_array($val)) {

$this->CI->db->where_in($key, $val);

unset($whereArr[$key]);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 您可以使用以下 SQL 查询来查找当前数据库编码不为 utf8mb4_general_ci 的表名: ``` SELECT table_name, table_collation FROM information_schema.tables WHERE table_schema = DATABASE() AND table_collation NOT LIKE 'utf8mb4_general_ci'; ``` 请注意,上面的查询假定您正在使用 MySQL 5.7 或更高版本。如果您正在使用早期版本,则需要稍加修改。 ### 回答2: 在MySQL,可以通过查询information_schema库的表来获取当前数据库所有编码非utf8mb4_general_ci的表名。具体步骤如下: 首先连接到MySQL数据库,并选择要查询的数据库。 然后执行以下查询语句: SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA = '当前数据库名' AND TABLE_COLLATION != 'utf8mb4_general_ci' 这段查询语句会从information_schema库的TABLES表筛选出当前数据库编码非utf8mb4_general_ci的表名。其,TABLE_SCHEMA表示数据库名,需要将其替换为实际的当前数据库名。 最后,通过执行查询语句,即可获取到当前数据库所有编码非utf8mb4_general_ci的表名。 ### 回答3: 在MySQL,可以使用以下语句查找当前数据库所有编码不为utf8mb4_general_ci的表名: ```mysql SELECT table_name FROM information_schema.tables WHERE table_schema = DATABASE() AND table_collation NOT LIKE 'utf8mb4_general_ci' ``` 解释: 上述语句使用了information_schema数据库的tables视图来查询当前数据库的表名。WHERE子句的table_schema = DATABASE()条件用于限制查询当前数据库,而table_collation NOT LIKE 'utf8mb4_general_ci'条件则用于筛选编码不为utf8mb4_general_ci的表。 最后,使用SELECT语句来获取满足条件的表名。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值