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

membuat slug judul halaman unik php

Cukup tekan database sekali, ambil semuanya sekaligus, kemungkinan itulah hambatan terbesarnya.

$query = "SELECT * FROM $table_name WHERE  $field_name  LIKE '".$slug."%'";

Kemudian masukkan hasil Anda ke dalam array (misalkan $slugs )

//we only bother doing this if there is a conflicting slug already
if(mysqli_num_rows($result) !== 0 && in_array($slug, $slugs)){
    $max = 0;

    //keep incrementing $max until a space is found
    while(in_array( ($slug . '-' . ++$max ), $slugs) );

    //update $slug with the appendage
    $slug .= '-' . $max;
}

Kami menggunakan in_array() memeriksa seolah-olah siput itu my-slug LIKE juga akan mengembalikan baris seperti

my-slug-is-awesome
my-slug-is-awesome-1
my-slug-rules

dll yang akan menyebabkan masalah, in_array() pemeriksaan memastikan bahwa kami hanya memeriksa slug persis yang dimasukkan.

Mengapa kita tidak menghitung saja hasilnya dan memberi +1?

Ini karena jika Anda memiliki beberapa hasil, dan menghapus beberapa, slug Anda berikutnya dapat bentrok.

Mis.

my-slug
my-slug-2
my-slug-3
my-slug-4
my-slug-5

Hapus -3 dan -5 meninggalkan kita dengan

my-slug
my-slug-2
my-slug-4

Jadi, itu memberi kita 3 hasil, sisipan berikutnya adalah my-slug-4 yang sudah ada.

Mengapa kita tidak menggunakan ORDER BY dan LIMIT 1 ?

Kami tidak bisa hanya melakukan order by dalam kueri karena penyortiran alami akan membuat my-slug-10 peringkat lebih rendah dari my-slug-4 karena membandingkan karakter demi karakter dan 4 lebih tinggi dari 1

Mis.

m = m
y = y
- = -
s = s
l = l
u = u
g = g
- = -
4 > 1 !!!
  < 0 (But the previous number was higher, so from here onwards is not compared)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Urutan Zend_Db berdasarkan nilai bidang

  2. Cara mendapatkan data dari database mysql

  3. Memuat tabel mysql ke python membutuhkan waktu yang sangat lama dibandingkan dengan R

  4. Perbedaan antara INT dan UUID di MySQL

  5. Cara Gagal atau Hancurkan Instans MySQL Anda untuk Pengujian