首页 > 解决方案 > 如何在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 \'\\\\\'', )]

电子邮件条件正在检查等于但不与完全一样。谁能帮我吗。?

提前致谢

标签: phpsql-likemoodle

解决方案


你没有显示你正在执行的函数调用来检索记录,但我猜它看起来像:

$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);

推荐阅读