sql >> Database teknologi >  >> RDS >> Mysql

Formater MySQL-kode inde i PHP-strengen

Den bedste måde at gøre dette på efter min mening er at bruge Regular Expressions eller SED/AWK til at formatere alt, det giver os bonussen af ​​erstatningskort i farten. Chancen for, at du kan have kodefejl, er dog stor, så det er lidt svært.

lad mig arbejde lidt på det, og jeg kan se, om jeg kan komme med en god løsning. Er det garanteret, at du indkapsler alle SQL-dobbelte anførselstegn?

REDIGER

Prøv dette

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 ;'

Her er et eksempel

$ 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";

Er det smukt? nej, slet ikke, virker det.... Yeup.

Jeg vil prøve at oprette en filterfil og måske et lille bash-program eller noget, efterhånden som jeg får tid til at køre dette varme rod.

REDIGER

Her er noget revideret kode, der ser smukkere ud (sorta)

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. Få skjult inputværdi fra databasen efter vælg formular

  2. Opbevaringsmotoren til bordet understøtter ikke reparation. InnoDB eller MyISAM?

  3. Hvordan håndterer man SQL-kolonnenavne, der ligner SQL-nøgleord?

  4. ODP.NET Managed - Kan ikke finde den anmodede .Net Framework Data Provider