Страницы

Поиск по вопросам

четверг, 6 февраля 2020 г.

php mysql удаляет символ \ при вставке

#php #mysql


update shop_items_rows_values set value = '5\3' where id_row = '94' and id_item = '1'


В базе оказывается значение 53.
    


Ответы

Ответ 1



Символ "\" является специальным для SQL, и его надо экранировать. Если он прописан в запросе явно, руками, то его надо удвоить: update shop_items_rows_values set value = '5\\3' where id_row = '94' and id_item = '1' Если же значение подставляется в запрос динамически, то такое значение надо передавать через плейсхолдер: $sql = "update shop_items_rows_values set value = ? where id_row = ? and id_item = ?"; $stmt = $pdo->prepare($sql)->execute(['5\\3', 94, 1]);

Ответ 2



Символ слеша служит для экранирования данных, т.е. применение слеша к символу часто меняет его значение. Например \n означает символ перевода строки, \t - символ табуляции. В случае чисел больше 0, слеш оставляет символ числа без изменения. Однако, сам он не сохраняется. Если вы хотите сохранить слеш, вам следует преобразовать строку в '5\\3'. И это без учета внешних строк, так как эта строка может быть сама быть частью другой строки.

Комментариев нет:

Отправить комментарий