作为我的搜索结果,Laravel默认使用PDO处理数据库查询,并且不需要像使用PDO时mysql_real_escape_string()
那样转义任何查询。
mysql_real_escape_string()
将\r
转换为\\r
,这就是我需要的内容,因为我不希望用户名中出现回车字符。
但是,当我尝试这个时:
$name="\r\r\r\r\r\r\r\r\r";
$user = User::where("username","=",$input)->first();
$user->name=$name;
$user->save();
echo "<p>".$user["name"]."</p>";
输出html代码如下:
<p>
</p>
PDO是否使用其他方法处理\r
?
或者Laravel没有使用PDO来处理这个查询?
我能做到最好的方法是什么?
答案 0 :(得分:1)
前提是错误的:有效的“_escape_string”会不更改数据的内容,只会更改特定上下文中的编码。
如果不需要换行符(或其他奇数字符),则应用业务规则保护或过滤来自用户的数据。
(另外,客户端转义甚至可能不在PDO内部使用。)
答案 1 :(得分:-1)
如果要替换数据中的某些字符,那么使用哪个数据库层并不重要。
用适当的PHP函数替换你想要的任何字符。这就是全部