БД сама добавляет & (барабашка)
Есть вот такая строка:
2854693asdrvbh!)>%&#^"<dff\:'-=~
Перед записью в базу прогоняю эту строку через функцию:
function prep_data($m, $p) {
$a = trim($p);
$a = mysqli_real_escape_string($m, $a);
$a = quotemeta($a);
$a = htmlentities($a, ENT_QUOTES, 'UTF-8');
return $a;
}
$str = prep_data($mysqli, "2854693asdrvbh!)%&#^"dff\:'-=~");
После прохода через функцию строка имеет такой вид в var_dump():
2854693asdrvbh!\)%&#\^\\"dff\\\\:\\'-=~
И в таком вот виде я отправляю эту строку в базу данных таким вот способом:
function add($p1) {
global $mysqli;
$sql = mysqli_prepare($mysqli, "INSERT INTO test (name) VALUES(?)");
mysqli_stmt_bind_param($sql, "s", $p1);
mysqli_stmt_execute($sql);
mysqli_stmt_close($sql);
}
add("2854693asdrvbh!\)%&#\^\\"dff\\\\:\\'-=~");
И в итоге в базе имеется запись этой строки в таком вот виде:
2854693asdrvbh!\)%&#\^\\"dff\\\\:\\'-=~
Как видим запись произошла с дополнительной заменой амперсандов
//это
&
//поменялось на это
&
Где зарыт барабашка и как от этого избавиться или что делать вообще подскажите пожалуйста?
Требуется, чтобы строка сохранялась в базу в том виде, как после функции, без доп замены амперсандов.
Ответы (1 шт):
Я лично открыл для себя Америку с этим вопросом) Или я перегрелся)
Весь мой функционал расписанный в вопросе ВЕРНЫЙ.
Несмотря на то, что значения в базе лежат с дополнительной обработкой амперсандов, при сравнении строка после функции и строка из базы БУДУТ ВЕРНЫ (true, true, true!!!).