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

क्या URL में दिए गए मान का उपयोग करके डेटाबेस को क्वेरी करना और mod_rewrite का उपयोग करके URL को क्वेरी का परिणाम लिखना संभव है?

यह संभव है, लेकिन आपको RewriteMap का उपयोग करने की आवश्यकता है। एक मैपिंग को परिभाषित करने के लिए जिसे आप RewriteRule . के भीतर उपयोग कर सकते हैं ।

अपाचे संस्करण 2.2 में प्रत्यक्ष डेटाबेस पहुंच नहीं है, इसलिए आपको एक स्क्रिप्ट लिखनी होगी जो वास्तविक क्वेरी करती है और फिर परिणाम लौटाती है। आप "External Rewriting Program"

इसलिए यदि आपके पास एक स्क्रिप्ट है जो स्टड से "बिल्लियाँ" लेती है, तो डेटाबेस से पूछताछ करती है, और "1" लौटाती है, आप इसे इस तरह परिभाषित करेंगे:

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

वह निर्देश आपके सर्वर या vhost config में होना चाहिए, यह htaccess फ़ाइल में नहीं हो सकता है। लेकिन आप htaccess फ़ाइल में मैपिंग का उपयोग कर सकते हैं:

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

तो यह यूआरआई लेता है /cats और उसे /item.php?id=1 . पर फिर से लिखता है ।

यदि आप apache 2.4 का उपयोग कर रहे हैं, तो आप " का लाभ उठा सकते हैं। DBD" नक्शा . आप किसी बाहरी स्क्रिप्ट का उपयोग किए बिना क्वेरी को सीधे मानचित्र परिभाषा में सम्मिलित कर सकते हैं। आप इसे उसी तरह इस्तेमाल करेंगे।

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

फिर इसे इसी तरह इस्तेमाल करें:

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

DBD/FastDBD क्वेरी का उपयोग किए बिना, मुझे लगता है कि आप item.php से डेटाबेस लुकअप करने से ईमानदारी से बेहतर हैं , चूंकि आप किसी भी तरह से उस सभी कार्य को दूसरी बाहरी स्क्रिप्ट में डुप्लिकेट कर रहे होंगे। बस कुछ इस तरह जोड़ें:

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]

और आपके item.php . में स्क्रिप्ट, दोनों id की जांच करें और नाम . अगर आपके पास नाम . है , एक आईडी में बदलने के लिए डेटाबेस लुकअप करें। इसे प्रबंधित करना बहुत आसान है, आपके पास सर्वर/vhost कॉन्फ़िग एक्सेस की आवश्यकता नहीं है, और आप फिर से लिखने वाले मानचित्र का उपयोग करके मामलों को जटिल नहीं बना रहे हैं।




  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. MySQL मेरी अनुक्रमणिका अच्छी है?

  3. PHP/SQL डेटाबेस अच्छे अभ्यास और सुरक्षा की क्वेरी करता है

  4. SQL कथन में सभी मापदंडों का उपयोग नहीं किया गया था (पायथन, MySQL)

  5. XSD से MySQL स्कीमा