Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Có cách nào an toàn để tham số hóa tên cơ sở dữ liệu trong các truy vấn MySQL không?

Tên cơ sở dữ liệu (không phải tên cột hoặc bảng) không phải là giá trị dữ liệu và do đó không phải là cách sử dụng thích hợp của trình giữ chỗ. muốn làm điều này thường là một dấu hiệu xấu; chỉ DBA mới có thể phát hành create database , vì làm như vậy đòi hỏi một số đặc quyền đáng kể. Hầu hết các ứng dụng yêu cầu DBA phát hành cơ sở dữ liệu tạo, sau đó lấy cơ sở dữ liệu đã tạo làm tham số được sử dụng trong các đối số của dbapi.

Nếu bạn chắc chắn mình cần điều này, bạn tin tưởng nguồn đầu vào và bạn đã kiểm tra đầu vào để tìm các ký tự không hợp lệ, bạn chỉ cần thực hiện thay thế bằng python, đại loại như:

def createDB(dbConn, dbName):
    c = dbConn.cursor()
    query = """CREATE DATABASE %s;""" % dbName
    c.execute(query)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. không thể hiển thị biểu tượng nhãn hiệu trong mysql sang html

  2. node.js async / await sử dụng với MySQL

  3. Các dấu ngoặc kép xung quanh các bảng và cột trong truy vấn MySQL có thực sự cần thiết không?

  4. MySQL:Giá trị mặc định không hợp lệ cho TIMESTAMP

  5. html xem chi tiết thả xuống giá trị đã chọn không được chèn vào MYSQL