SQL оператор UPDATE с большими HTML данными - PullRequest
2 голосов
/ 27 апреля 2020

У меня есть некоторый автоматизированный рабочий процесс, который включает в себя обновление столбца с помощью SQL с тегами HTML.

Оператор basi c SQL выглядит следующим образом:

UPDATE content SET bodytext = '<div class="one two three">Here comes a whole lot of HTML with all special chars and double quotes " and single quotes ' and empty lines and all possible kind of stuff...</div>' WHERE pid = 10;

Есть ли способ заставить MariaDB или MySQL автоматически избегать вещей в SQL (без PHP)?

Ответы [ 2 ]

0 голосов
/ 27 апреля 2020

Спасибо за ваш вклад, но я думаю, что нашел решение, которое работает для меня. Похоже, что на самом деле вы можете сказать серверу SQL принять необработанную строку с помощью такого синтаксиса:

SELECT q'[The 'end' of the day]'

(Источник: https://www.databasestar.com/sql-escape-single-quote/ )

Итак, я сделал следующее:

SELECT @html := '[<div class="one two three">Here comes a whole lot of HTML with all special chars and double quotes " and single quotes '' and empty lines and all possible kind of stuff...</div>]';
UPDATE content SET bodytext = @html WHERE pid = 10;

И все работает без проблем.

0 голосов
/ 27 апреля 2020

Я бы предложил использовать подготовленные заявления. Таким образом, вы отделяете оператор от его параметров и вам не нужно заботиться о дополнительном экранировании, необходимом в простом SQL.

Использование функций, предоставляемых в драйвере MySQLi PHP, упростит процесс:

https://www.w3schools.com/php/php_mysql_prepared_statements.asp

Подготовленные заявления также возможны в простом SQL, но я не уверен, что выполнение этого вручную будет стоить хлопот

https://dev.mysql.com/doc/refman/8.0/en/sql-prepared-statements.html

...