Обновление XHR завершается неудачно со строкой, содержащей «#», где форма успешно завершает публикацию - PullRequest
0 голосов
/ 30 октября 2019

Я перехожу от стандартных сообщений формы (к PHP PDO) к асинхронным сообщениям XHR для обновления базы данных mysql (снова PHP PDO), используя подготовленные операторы, вызывающие хранимые процедуры mysql.

Использование HTMLSpecialCharacters / UTF-8 и т. Д. Для очистки входных данных (как в версии XHR, так и в форме пост-версии). Также установите charset = utf8 в моей строке подключения PDO.

Проблема заключается в том, что если я передам версии XHR строку, содержащую "#", обновление завершится неудачно. Возвращенная ошибка SQLSTATE [23000] указывает, что совершенно отдельный столбец не может быть пустым (согласно ограничению таблицы).

Введено несколько полей, и независимо от того, какое из них содержит «#», одно и то же нулевое ограничение нарушается.

Обратите внимание, что поле, устанавливаемое на ноль, является последним, установленным с помощью $ stmt-> bindvalue.

Кроме того, я использую $ _GET [] в значениях связывания, а не $ _POSTкоторая была проблемой в аналогичном вопросе.

Я понимаю, что мог бы заменить "#" при записи и вернуть его на чтение (я уже делаю это с переносами строк), но у меня подлыйПодозрение, что я здесь упускаю что-то фундаментальное (я немного новичок в AJAX и PHP).

Нет никаких проблем с "#" (или разрывами строк) в стандартном посте формы.

TIA для любых указателей

1 Ответ

0 голосов
/ 30 октября 2019

Ууу ... Я понял это, или, если честно, я сдался и попробовал другой метод. Вместо того, чтобы публиковать значения как часть URL с типом контента application / x-www-form-urlencoded, я разместил данные как json, используя content-type = application / json.

Не только имеетпроблема исчезла, но мне больше не нужно искать и заменять разрывы строк и # s.

Подход json кажется наиболее логичным и наименее болезненным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...