如何在whereRaw中转义字符串?



在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]);
}

最新更新