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

PHP:Vòng lặp while không hoạt động sau khi điều chỉnh SELECT để ngăn chặn việc tiêm SQL

Bạn không thể ràng buộc tên cột và bảng, chỉ có dữ liệu. Bạn cần chỉ định bảng và sau đó liên kết cho '%calendar weekday%' của bạn .

$stmt = $conn->prepare("SELECT " . $selectLang . " FROM `TranslationsMain` WHERE `location` LIKE ? ORDER BY `sortOrder`, " . $selectedLang);
$stmt->bind_param('s', $calendar_weekday);

Nếu bạn muốn sử dụng tên bảng / cột động, bạn nên thực hiện danh sách trắng tối thiểu của các mục đó. Bạn có thể tạo một danh sách trắng động bằng cách hỏi cơ sở dữ liệu những cột nào hợp lệ cho một bảng cơ sở dữ liệu nhất định. Ví dụ:

SELECT `COLUMN_NAME` 
FROM `INFORMATION_SCHEMA`.`COLUMNS` 
WHERE `TABLE_SCHEMA` = `database_name`
AND `TABLE_NAME` = `table_name`

Bạn có thể đặt tất cả thông tin này trong các mảng và sau đó kiểm tra để đảm bảo tên bảng / cột được sử dụng trong truy vấn nằm trong mảng. Cần cân nhắc thêm đối với tên bảng và cột, đảm bảo rằng không có từ khóa / từ dành riêng nào được sử dụng cho những tên này.

Cuối cùng, sử dụng dấu gạch ngược xung quanh tên bảng / cột đã được xác thực khi gọi các giá trị cho các truy vấn động. Điều này sẽ bao gồm mọi thay đổi tiềm năng đối với danh sách từ khóa / từ dành riêng và cung cấp một lớp bảo vệ bổ sung.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql cte. sử dụng với và chèn nó cảnh báo lỗi cú pháp

  2. Tại sao chúng ta cần sử dụng Phím ngoại?

  3. Truy vấn SQL để Thực hiện Tìm kiếm Bán kính dựa trên Kinh độ Vĩ độ

  4. MySQL chọn tham gia ở đâu VÀ ở đâu

  5. Các mô hình Django:giá trị mặc định cho cột