sql >> Databáze >  >> RDS >> Mysql

Naformátujte kód MySQL uvnitř řetězce PHP

Nejlepší způsob, jak toho dosáhnout, je podle mého názoru použít regulární výrazy nebo SED/AWK k formátování všeho, což nám dává bonus náhradních map za běhu. Pravděpodobnost, že byste mohli mít chyby v kódu, je však vysoká, takže je to trochu obtížné.

nech mě na tom trochu zapracovat a uvidím, jestli dokážu přijít s dobrým řešením. Je zaručeno, že zapouzdřujete všechny dvojité uvozovky SQL?

UPRAVIT

Zkuste toto

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

Zde je příklad

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

je to hezké? ne, vůbec ne, funguje to.... Jo.

Zkusím vytvořit soubor filtru a možná i malý bash program nebo něco takového, až budu mít čas na spuštění této horké kaše.

UPRAVIT

Zde je nějaký revidovaný kód, vypadá hezčí (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. Android - Zobrazení uživatelského jména z databáze sqlite po přihlášení v textView

  2. Uložená procedura volání SQL pro každý řádek bez použití kurzoru

  3. Jak vypnout zobrazování chyb mysql na obrazovce v CodeIgniter

  4. Funkce vytvoření PostgreSQL