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

PHP स्ट्रिंग के अंदर MySQL कोड को फॉर्मेट करें

मेरी राय में ऐसा करने का सबसे अच्छा तरीका सब कुछ प्रारूपित करने के लिए नियमित अभिव्यक्ति या एसईडी/एडब्ल्यूके का उपयोग करना है, यह हमें फ्लाई पर प्रतिस्थापन मानचित्रों का बोनस देता है। हालांकि, कोड त्रुटियों की संभावना बहुत अधिक है, इसलिए यह काफी कठिन है।

मुझे इस पर थोड़ा काम करने दें और मैं देख सकता हूं कि क्या मैं एक अच्छा समाधान लेकर आ सकता हूं। क्या यह गारंटी है कि आप सभी SQL दोहरे उद्धरण चिह्नों को इनकैप्सुलेट कर रहे हैं?

संपादित करें

इसे आजमाएं

cd {{directory}} && find . -type f -print0 |
  xargs -0 perl -i.bak -pe 's/select/SELECT/g ; s/from/\n\tFROM/g ; s/where/\n\t\tWHERE/g ; s/and/\n\t\tAND/g ; s/order by/\n\t\tORDER BY/g ; s/asc/ASC/g ; s/desc/DESC/g ;'

यहां एक उदाहरण दिया गया है

$ printf '"select * from whatever where this = that and active = 1 order by something asc";\n' |
> perl -pe 's/select/SELECT/g ; s/from/\n\tFROM/g ; s/where/\n\t\tWHERE/g ; s/and/\n\t\tAND/g ; s/order by/\n\t\tORDER BY/g ; s/asc/ASC/g ; s/desc/DESC/g ;'

"SELECT * 
    FROM whatever 
        WHERE this = that 
        AND active = 1 
        ORDER BY something ASC";

क्या यह सुंदर है? नहीं, बिल्कुल नहीं, क्या यह काम करता है.... हाँ।

मैं इस हॉट मेस को चलाने के लिए समय मिलने पर एक फ़िल्टर फ़ाइल और शायद थोड़ा बैश प्रोग्राम या कुछ और बनाने की कोशिश करूँगा।

संपादित करें

यहां कुछ संशोधित कोड दिया गया है, जो सुंदर दिखता है (सॉर्टा)

printf '$request1 = "select * from whatever where this = that and active = 1 order by something asc";\n' | 
perl -pe 's/select/SELECT/gi ; s/from/\n  FROM/gi ; s/where/\n    WHERE/gi ; s/and/\n    AND/gi ; s/order by/\n      ORDER BY/gi ; s/asc/ASC/gi ; s/desc/DESC/gi ;' | 
awk 'NR == 1 {pad = length($0)/2; print} NR > 1 {gsub(/\r/,""); printf "%*s%s\n", pad, " ", $0}'

__OUTPUTS__
$request1 = "SELECT * 
             FROM whatever 
               WHERE this = that 
               AND active = 1 
                 ORDER BY something ASC";


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. बेहद बुनियादी PHP और Mysql

  2. मैं सक्रिय रिकॉर्ड में बल्क इंसर्ट के लिए बनाई गई आईडी की सूची कैसे प्राप्त करूं?

  3. MySQL - DESC द्वारा ऑर्डर के साथ ग्रुप करें

  4. मैं तैयार पीडीओ स्टेटमेंट का उपयोग करके ORDER BY params कैसे सेट करूं?

  5. innoDB पर धीमी गिनती (*)