我正在使用Laravel 5,并尝试将带有+
符号的电子邮件插入数据库中的字符串字段。
不幸的是,+
被解码到数据库中的空间。我跟踪代码并将其识别为pdo,将值更改为空格。
代码如下:
$bindings = $me->prepareBindings($bindings);
return $me->getPdo()->prepare($query)->execute($bindings);
如果我在两个语句之间打印 $bindings
数组,则电子邮件为:email => email+test@email.com
。但是,当我检查数据库时,它会显示:email test@email.com
。
我的广泛问题是如何通过Laravel避免这种情况?或者更具体地说,如何使用pdo避免它?
答案 0 :(得分:0)
我错了。 PDO没有对它进行消毒。前端正在对它进行消毒,因此它与Laravel或PDO无关。它是jquery,这意味着我浪费了一个小时,因为我在调试时没有采取另外一步。经验教训。
在前端我正在使用这个ajax调用:
$.ajax({
url: "/customers/"+$("#Id").val(),
data:data,
type: "PUT",
success: function(html) {
...
},
error: function(response){
...
}
});
答案 1 :(得分:-1)
尝试通过在其前面添加反斜杠来转义+符号。
email\+test@email.com