OperationalError: (1292, 'Усеченное неверное значение DOUBLE: \' 1 \ '; UPDATE foo SET text = LOAD_FILE (\' / something /thing.txt \ '); "- \' ') - PullRequest
0 голосов
/ 21 января 2019

Я ХОЧУ внедрить эту строку - чтобы она обновляла текст в таблице foo до красного текста из файла (мне все равно, что он делает с предыдущим оператором удаления)

"1\\'; UPDATE foo SET text = LOAD_FILE(\\'/something/something.txt\\');\"-- "

в код Python, где id установлен в мою строку: (это не может быть изменено, поскольку оно дано)

"DELETE FROM bar WHERE user_id = \'%s\' and bar_id = \'%s\';"%(str(user_id), str(id))

EDIT: Это сработало так (без последней кавычки и # - вместо -): "1 \ '; ОБНОВЛЕНИЕ foo SET text = LOAD_FILE (\' / что-то / что-то .txt \ '); # -"

Ответы [ 2 ]

0 голосов
/ 26 января 2019

Работает так (без последней кавычки и # - вместо -):

"1\'; UPDATE foo SET text = LOAD_FILE(\'/something/something.txt\'); #- "
0 голосов
/ 21 января 2019

Вам не нужна обратная косая черта, и, если идентификатор является целым числом, вам тоже не нужен '. Вы должны переписать это так:

"DELETE FROM bar WHERE user_id = '%s' and bar_id = '%s';"%(str(user_id), str(id))

И вы должны использовать подготовленные операторы, чтобы избежать внедрения SQL. Вы можете использовать подготовленное утверждение, как это (в этом вы должны снять ')

cursor.execute("DELETE FROM bar WHERE user_id = %s and bar_id = %s;",(str(user_id), str(id),))

EDIT Если вы делаете что-то вроде:

x="1\'; UPDATE foo SET text = LOAD_FILE(\'/something/something.txt\'); --"
y="DELETE FROM bar WHERE user_id = \'%s\' and bar_id = \'%s" % (2,x)

То, что вы получаете в y, это

DELETE FROM bar WHERE user_id = '2' and bar_id = '1'; UPDATE foo SET text = LOAD_FILE('/something/something.txt'); --
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...