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

Có thể truy vấn cơ sở dữ liệu bằng cách sử dụng giá trị được truyền trong URL và ghi kết quả của truy vấn vào URL bằng mod_rewrite không?

Có thể, nhưng bạn cần sử dụng Bản đồ ghi lại để xác định ánh xạ mà bạn có thể sử dụng trong RewriteRule .

Apache phiên bản 2.2 không có quyền truy cập cơ sở dữ liệu trực tiếp, vì vậy bạn sẽ cần viết một tập lệnh thực hiện truy vấn thực tế sau đó trả về kết quả. Bạn có thể xác định bản đồ này bằng cách sử dụng "Chương trình viết lại bên ngoài" .

Vì vậy, nếu bạn có một tập lệnh lấy "mèo" từ stdin, sau đó truy vấn cơ sở dữ liệu và trả về "1", bạn sẽ định nghĩa nó như vậy:

RewriteMap item_lookup prg:/path/to/item_lookup.php

Chỉ thị đó phải có trong máy chủ hoặc cấu hình vhost của bạn, không thể có trong tệp htaccess. Nhưng bạn có thể sử dụng ánh xạ trong tệp htaccess:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /item.php?id=${item_lookup:$1} [L]

Vì vậy, điều này lấy URI /cats và viết lại thành /item.php?id=1 .

Nếu bạn đang sử dụng apache 2.4 thì bạn có thể tận dụng " DBD "bản đồ . Bạn có thể chèn một truy vấn ngay vào định nghĩa bản đồ, bỏ qua việc phải sử dụng tập lệnh bên ngoài. Bạn sẽ sử dụng nó theo cách tương tự.

RewriteMap item_lookup "fastdbd:SELECT id FROM items WHERE name = %s"

Sau đó, sử dụng nó theo cách tương tự:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /item.php?id=${item_lookup:$1} [L]

Nếu không sử dụng truy vấn DBD / FastDBD, tôi nghĩ bạn nên thực hiện tra cứu cơ sở dữ liệu từ item.php , vì dù sao thì bạn cũng sẽ sao chép tất cả công việc đó trong một tập lệnh bên ngoài thứ hai. Chỉ cần thêm một cái gì đó như:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^item/([0-9]+)$ /item.php?id=$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([A-Za-z0-9-]+)$ /item.php?name=$1 [L]

Và trong item.php của bạn script, hãy kiểm tra cả id tên . Nếu bạn có tên , thực hiện tra cứu cơ sở dữ liệu để biến nó thành id. Quản lý dễ dàng hơn nhiều, bạn không cần phải có quyền truy cập cấu hình máy chủ / vhost và bạn không làm phức tạp vấn đề bằng cách sử dụng bản đồ viết lại.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Xây dựng cơ sở dữ liệu khả dụng cao cho Moodle bằng cách sử dụng MySQL Replication

  2. MySQL lỗi 150, không thể tạo bảng

  3. PHP:mysql v mysqli v pdo

  4. MySQL chèn hàng trên bản cập nhật khóa trùng lặp nhiều cột

  5. Hiệu suất chèn hàng loạt JDBC