Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Tulis ulang URL, ganti ID dengan judul dalam string kueri

Tentu saja mungkin, untuk skrip PHP .htaccess Anda mungkin terlihat seperti ini:

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>

Ini akan menulis ulang semua URL kecuali direktori atau nama file menjadi "index.php?url=THE-TYPED-ADDRESS".

Di index.php Anda, Anda kemudian dapat menggunakan nilai $_GET['url'] untuk menentukan ID:

// init DB layer
if (isset($_GET['url']) && !empty($_GET['url'])) {
  $url = my_filter_function($_GET['url']); // filter input
  $pdo = my_get_pdo_function(); // get configured PDO objected
  $query = "SELECT id FROM my_router_table WHERE url = ? LIMIT 1"; // use prepared statements for security/performance reasons

  $stmt = $pdo->prepare($query);
  $stmt->bindValue(1, $url, PDO::PARAM_STR); // bind the value as a string

  // ternary operator expanded for readability
  if ($stmt->execute()) {
    $id = $stmt->fetch(PDO::FETCH_ASSOC);
  } else {
    $id = -1; // 404 page
  }

  // fetch content/render page according to ID
}

Ini jelas merupakan contoh yang terlalu disederhanakan dan Anda harus benar-benar memastikan bahwa Anda benar-benar lolos dari input dan menggunakan pernyataan yang sudah disiapkan untuk menghindari risiko keamanan. Juga, jika Anda menggunakan MySQLi atau lapisan akses basis data lain, kode persiapan/eksekusi/pengambilan Anda akan sedikit berbeda.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Gunakan LIKE %..% dengan nilai bidang di MySQL

  2. Mengapa memanggil Class.forName(com.mysql.jdbc.Driver) mendaftarkan MySQL untuk JDBC?

  3. Bagaimana cara mendapatkan cap waktu Unix di MySQL dari waktu UTC?

  4. Dapatkan hasil kueri hitung dengan mengabaikan pernyataan LIMIT

  5. PHP dan MySQL:Membandingkan bulan dan hari dengan tahun yang dinamis