Я использую Laravel 5 и пытаюсь вставить электронное письмо с знаком +
в поле строки в базе данных.pdo замена + пробелом
К сожалению, +
получает декодированное место в базе данных. Я проследил код и определил его как pdo, который меняет значение на пробел.
код выглядит следующим образом:
$bindings = $me->prepareBindings($bindings);
return $me->getPdo()->prepare($query)->execute($bindings);
Если я напечатать
$bindings
массив между двумя утверждениями электронной почты является:
email => [email protected]
. Однако, когда я проверяю db, он говорит:
email [email protected]
.
Мой широкий вопрос: как я могу избежать этого с помощью Laravel? Или более конкретно, как я могу избежать использования pdo?
У вас есть 3 вызовов функций в этой последней строке; вы пытались разбить их, чтобы увидеть, какая функция выполняет экранирование? – miken32
@ miken32 Да, 'execute' - это единственный оператор, который знает о' bindings'. Он находится в выполнении, который связывает значения с заполнителями в запросе. – ajon
Откуда берется адрес электронной почты? Если это параметр запроса ('$ _GET'), он должен быть закодирован в URL, то есть' http: //example.com/? Email = email% 2Btest @ email.com' – Phil