php - 如何在moodle中向现有查询添加类似条件
问题描述
我有一个带有多个条件检查的查询。我想添加条件来检查 with like 子句。我试过这样。
$params1['email'] =$DB->sql_like('email', '%'.$voucher_query.'%');
我将 params1 值传递给查询条件。我得到的查询不同,它不起作用。这是我得到的查询。
SELECT COUNT('x') FROM tbl_order WHERE active_ind = ? AND id = ? AND email = ? [array ( 0 => 1, 1 => 236909, 2 => 'email LIKE %emelchor% COLLATE utf8_bin ESCAPE \'\\\\\'', )]
电子邮件条件正在检查等于但不与完全一样。谁能帮我吗。?
提前致谢
解决方案
你没有显示你正在执行的函数调用来检索记录,但我猜它看起来像:
$DB->get_records('order', $params);
这种简单的 DB 语法只适用于 equals 比较,如果你想做更复杂的事情,你需要重写它以使用 get_records_select 函数,例如
$select = 'active_ind = :ind AND id = :id AND '.$DB->sql_like('email', ':email');
$email = '%'.$DB->sql_like_escape($voucher_query).'%';
$params = ['ind' => $ind, 'id' => $id, 'email' => $email];
$result = $DB->get_records_select('order', $select, $params);
推荐阅读
- javascript - 如何解密之前使用 PHP 加密的 NodeJS 中的令牌?
- excel - 比较单元格格式
- aws-codepipeline - AWS 代码构建错误:“发现辅助源的重复源位置”
- linux - Raspberry pi 4 - 具有自定义 GUI 界面和快速启动速度
- iphone-privateapi - 如何制作一个类似于 IOS Screesaver 的应用程序,它会自动启动并在空闲后返回?
- go - 导入包时出错(google.golang.org/api/option):“错误读取符号:EOF”
- c++ - 创建不执行任何操作导致内存泄漏 x64 的线程
- java - Java Spark,无法使用 PUT 或 PATCH 更新数据
- angular - 函数中的 Angular 9 类型检查返回“对象”
- kubernetes - 云上高可用性的 RabbitMQ 最佳实践