我有一堆数学任务,我想通过一个文本框进行过滤。
例如: 4 * 1应该返回4 * 1、4 * 10、4 * 11,... 4 * 11应该返回4 * 11
为此,我编写了这段代码:
$operator = DB::connection()->getPdo()->quote("{$operator}");
$operand2 = DB::connection()->getPdo()->quote("{$operand2}%");
DB::table('tasks')
->select(DB::raw('*'))
->whereRaw("operand1 = {$operand1} AND operator = {$operator} AND CAST(operand2 AS CHAR(50)) LIKE {$operand2}")
->get();
结果非常出乎意料,而且无法预测。
当我输入4 * 5时,我得到4 * {任何操作数}
当我输入4 * 12时,我得到4 * 1、4 * 10、4 * 11、4 * 12
更新/解决方案
事实证明,它与MySQL或Laravel没有任何关系。这是JS中的错误。我使用了keypress事件而不是keyup。这样总是丢失最后输入的数字。