在laravel 9中,我在代码中使用了whereRaw:
$query->whereRaw( 'item.day ' . $sign . "'".$filter_day."' " );
但是我需要逃避它。函数mysql_real_escape_string现在是绝对的…我在这里可以用什么?我现在使用mysql8,但我更喜欢在laravel侧选择不同的数据库。
提前感谢!
我建议仔细阅读Laravel文档:https://laravel.com/docs/9.x/queries#raw-methods
您可以使用?
作为我上面给出的链接来转义字符串。
$query->whereRaw( 'item.day ' . $sign . ' ?', [$filter_day]);
不能转义操作符$sign
,因为它是MYSQL操作符。此外,您必须确保您正确检查/消毒$sign
以避免SQL注入。例如
if (in_array($sign, ['=', '<', '>', '<=', '>=', '!=', '<>'])) {
$query->whereRaw( 'item.day ' . $sign . ' ?', [$filter_day]);
}