При попытке защититься от SQL-инъекций разработчик столкнулся с ошибкой при использовании SQLite3 с Python 2.5. При использовании рекомендуемого знака "?" подстановкой параметров для предотвращения инъекций, они столкнулись со следующей дилеммой:
sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 8 supplied.
Похоже, что эта проблема возникла из-за первоначального создания базы данных, которая содержала восемь привязок. Однако использование менее безопасной замены «%s» для каждого имени элемента решило проблему.
for item in self.inventory_names: self.cursor.execute("SELECT weight FROM Equipment WHERE name = '%s'" % item) self.cursor.close()
Решение этого недоумения заключается в понимании того, что метод Cursor.execute() требует последовательность в качестве второго параметра. В этом случае разработчик предоставил строку длиной восемь символов. Чтобы исправить это, необходимо реализовать следующую модификацию кода:
self.cursor.execute("SELECT weight FROM Equipment WHERE name = ?", [item])
В соответствии с этим параметром спецификации, проблема может быть эффективно решена, обеспечивая безопасное и эффективное извлечение данных из SQLite3.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3