如何在 moodle 中向现有查询添加类似条件
How to add like condition to existing query in 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语法只适用于相等比较,如果你想做更复杂的事情,你需要重写它以使用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);
我有一个包含多个条件检查的查询。 我想添加条件来检查 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语法只适用于相等比较,如果你想做更复杂的事情,你需要重写它以使用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);