Maison  >  Article  >  développement back-end  >  Formater et mettre en surbrillance les instructions SQL en PHP

Formater et mettre en surbrillance les instructions SQL en PHP

藏色散人
藏色散人avant
2019-09-07 11:13:093275parcourir

Formater et mettre en surbrillance les instructions SQL en PHP

jdorn/sql-formatter est une classe PHP légère pour formater les instructions SQL.

Il prend en charge l'indentation automatique, l'ajout de sauts de ligne et même la coloration syntaxique.

Utilisé dans la ligne de commande

Le package d'extension contient un fichier exécutable bin/sql-formatter qui peut être utilisé directement pour le formatage de la ligne de commande SQL.

Vous pouvez utiliser cette commande après avoir installé Composer globalement :

composer global require jdorn/sql-formatter
sql-formatter "SELECT SOME QUERY;" // 直接格式化
// 或
echo "SELECT SOME QUERY;" | sql-formatter // 使用管道,更适合较大量的 SQL 语句

Utilisé comme package d'extension

La classe SqlFormatter contient une méthode de format nommée statique, qui peut recevoir une chaîne d'instruction SQL en tant que paramètre et renvoyer du code HTML formaté enveloppé dans des balises pre.

Par exemple :

<?php
require_once(&#39;SqlFormatter.php&#39;);
$query = "SELECT count(*),`Column1`,`Testing`, `Testing Three` FROM `Table1`
    WHERE Column1 = &#39;testing&#39; AND ( (`Column2` = `Column3` OR Column4 >= NOW()) )
    GROUP BY Column1 ORDER BY Column3 DESC LIMIT 5,10";
echo SqlFormatter::format($query);

Sortie :

Formater et mettre en surbrillance les instructions SQL en PHP

Formatage uniquement sans surbrillance

Si vous n'avez pas besoin de surbrillance et vous n'avez besoin que d'ajouter une indentation et des sauts de ligne, veuillez définir le deuxième paramètre sur false.

Convient à la sortie de journaux d'erreurs ou d'autres données non HTML.

<?php
echo SqlFormatter::format($query, false);

Sortie :

Formater et mettre en surbrillance les instructions SQL en PHP

Sélectionner uniquement sans formatage

Il existe une méthode distincte nommée Highlight, elle peut garantir que le format d'origine n'est pas modifié et que seule la coloration syntaxique est ajoutée.

convient lorsque le SQL a été bien formaté et doit être rendu plus lisible.

Formater et mettre en surbrillance les instructions SQL en PHP

Compresser l'instruction de requête

La méthode compress peut supprimer tous les commentaires SQL et compresser les espaces inutiles.

convient pour générer plusieurs instructions de requête et faciliter le copier-coller dans la ligne de commande.

-- This is a comment
    SELECT
    /* This is another comment
    On more than one line */
    Id #This is one final comment
    as temp, DateCreated as Created FROM MyTable;
echo SqlFormatter::compress($query);

Sortie :

SELECT Id as temp, DateCreated as Created FROM MyTable;

Supprimer les commentaires

Si vous devez conserver le format d'origine mais que vous devez quand même supprimer les commentaires SQL, vous pouvez utiliser la méthode RemoveComments pour remplacer compress.

-- This is a comment
    SELECT
    /* This is another comment
    On more than one line */
    Id #This is one final comment
    as temp, DateCreated as Created FROM MyTable;
echo SqlFormatter::removeComments($query);

Sortie :

    SELECT
    Id 
    as temp, DateCreated as Created FROM MyTable;

Diviser plusieurs instructions SQL en tableaux

Il existe également une fonctionnalité indépendante du format qui peut diviser plusieurs instructions SQL en tableaux Les instructions SQL sont séparées en tableaux.

Par exemple :

DROP TABLE IF EXISTS MyTable;
CREATE TABLE MyTable ( id int );
INSERT INTO MyTable (id)
    VALUES
    (1),(2),(3),(4);
SELECT * FROM MyTable;
$queries = SqlFormatter::splitQuery($sql);

Résultat :

DROP TABLE IF EXISTS MyTable;
CREATE TABLE MyTable ( id int );
INSERT INTO MyTable (id) VALUES (1),(2),(3),(4);
SELECT * FROM MyTable;

Pourquoi ne pas utiliser des expressions régulières ?

Allez lire le README~https://github.com/jdorn/sql-formatter#why....

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer