Есть ли функция (python или PHP), которая будет возвращать строку с правильными кавычками пользовательского ввода, подхоMySql

Форум по Mysql
Ответить
Anonymous
 Есть ли функция (python или PHP), которая будет возвращать строку с правильными кавычками пользовательского ввода, подхо

Сообщение Anonymous »

При обновлении базы данных MySQL с помощью Python3 или PHP необходимо убедиться, что введенные пользователем значения надлежащим образом защищены с помощью чего-то вроде:

Код: Выделить всё

statement = "INSERT INTO t1 (c1, c2, c3, c4 ) VALUES ( ?, ?, ?, ?)"
values = (v1, v2, v3, v4)
db.execute(statement, values)

Существует ли эквивалентная функция, которая просто возвращает оператор SQL в виде строки (например, что выдает mysqldump)?

И в идеале, без необходимости подключения к реальной базе данных.
Цель состоит в том, чтобы написать интерактивную программу ввода данных, которая генерирует SQL в соответствующих кавычках независимо от доступа к базе данных.

(Безопасность (например, ручное вмешательство в выходные данные) в данной ситуации это не вызывает беспокойства.)
Ответ:
Нет, и по уважительной причине.
В такой функции нет особой необходимости, и любой процесс, требующий ее, плохо спроектирован.
В моем случае:
  • Я надеялся полностью изолировать сбор данных от базы данных, а затем передать результаты в MySQL для выполнения обновить.
  • Я также пытался сделать это концептуально простым, представляя собранные данные в форме, подходящей для передачи непосредственно в MySQL.
Первое не обязательно является плохой идеей.
Но второе это:
  • Он не использует соответствующие инструменты, которые уже предусмотрены в библиотеках.
  • Это требует первой части процесса чтобы знать о второй части.
Гораздо лучший подход — иметь собранные данные в независимой от реализации форме (например, текстовый файл с полями, разделенными табуляцией) и иметь вторую программу, которая преобразует эти данные и передает их в MySql с использованием стандартных инструментов («подготовка» и «выполнение»).
Это также означает, что, если я позже переключусь на другую систему базы данных, процесс сбора данных не потребуется изменения.
Спасибо @Bill Karwin за указание на то, что должно было быть очевидно.

Подробнее здесь: https://stackoverflow.com/questions/798 ... s-properly
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «MySql»