Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

अद्वितीय पृष्ठ शीर्षक स्लग बनाना php

बस एक बार डेटाबेस को हिट करें, एक ही बार में सब कुछ हड़प लें, संभावना है कि यह सबसे बड़ी अड़चन है।

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

फिर अपने परिणामों को एक सरणी में रखें (मान लें $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;
}

हम in_array() . का उपयोग करते हैं जाँच करता है जैसे कि स्लग my-slug . था LIKE पंक्तियों को भी लौटाएगा जैसे

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

आदि जो समस्याएं पैदा करेंगे, in_array() जाँच से यह सुनिश्चित होता है कि हम केवल वही दर्ज किए गए स्लग के विरुद्ध जाँच कर रहे हैं।

हम केवल परिणामों और +1 की गणना क्यों नहीं करते?

ऐसा इसलिए है क्योंकि यदि आपके कई परिणाम थे, और कुछ हटा दिए गए थे, तो आपका अगला स्लग विरोध कर सकता है।

उदा.

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

हटाएं -3 और -5 हमें छोड़ देता है

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

तो, यह हमें 3 परिणाम देता है, अगला इंसर्ट होगा my-slug-4 जो पहले से मौजूद है।

क्यों न हम केवल ORDER BY का उपयोग करें और LIMIT 1 ?

हम केवल order by . नहीं कर सकते क्वेरी में क्योंकि प्राकृतिक छँटाई my-slug-10 my-slug-4 . से नीचे रैंक क्योंकि यह चरित्र से चरित्र की तुलना करता है और 4 1 . से अधिक है

उदा.

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. MySQL दुरुपयोग में शामिल हों? यह कितना बुरा हो सकता है?

  2. CentOS 7 या RHEL 7 से MariaDB या MySQL को पूरी तरह से हटा दें

  3. Google क्लाउड SQL को केवल तभी कैसे चलाएं जब मुझे इसकी आवश्यकता हो?

  4. MySql क्वेरी को ऑप्टिमाइज़ करें:ऑर्डर करते समय बहुत धीमा

  5. मॉडल से अग्रेषित इंजीनियरिंग के बाद मैं स्वचालित रूप से एक MySQL स्क्रिप्ट या दिनचर्या कैसे निष्पादित करूं?