ホームページ >バックエンド開発 >PHPチュートリアル >PHP での SQL ステートメントのフォーマットとハイライト表示

PHP での SQL ステートメントのフォーマットとハイライト表示

藏色散人
藏色散人転載
2019-09-07 11:13:093316ブラウズ

PHP での SQL ステートメントのフォーマットとハイライト表示

jdorn/sql-formatter は、SQL ステートメントのフォーマットに使用される軽量の PHP クラスです。

自動インデント、改行の追加をサポートし、さらに構文の強調表示もサポートします。

コマンド ラインで使用されます

この拡張パッケージには、コマンド ラインで直接使用できる bin/sql-formatter 実行可能ファイルが含まれていますSQLのフォーマット。

Composer をグローバルにインストールした後、このコマンドを使用できます:

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

拡張パッケージとして使用します

SqlFormatter クラスには、format という名前の静的ファイルが含まれています. SQL ステートメント文字列をパラメータとして受け取り、pre タグでラップされた書式設定された HTML コードを返すメソッド。

例:

<?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);

出力:

PHP での SQL ステートメントのフォーマットとハイライト表示

##強調表示なしの書式設定のみ

ハイライトは必要なく、インデントと改行を追加するだけで済みます。2 番目のパラメータを false に設定してください。

エラー ログやその他の非 HTML データの出力に適しています。

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

出力:

PHP での SQL ステートメントのフォーマットとハイライト表示

書式設定なしでハイライトのみを行う

ハイライトという名前の別のメソッドがあります。元の形式は変更されず、構文の強調表示のみが追加されることを意味します。

SQL が適切にフォーマットされており、さらに読みやすくする必要がある場合に適用されます。

PHP での SQL ステートメントのフォーマットとハイライト表示

#クエリ ステートメントの圧縮

compress メソッドは、すべての SQL コメントを削除し、不要なスペースを圧縮できます。

複数のクエリ ステートメントを出力し、コマンド ラインに簡単にコピー アンド ペーストできるようにするのに適しています。

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

出力:

SELECT Id as temp, DateCreated as Created FROM MyTable;

コメントの削除

元の形式を維持する必要があるが、SQL コメントを削除する必要がある場合は、次の手順を実行します。圧縮を置き換えるには、removeComments メソッドを使用します。

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

出力:

    SELECT
    Id 
    as temp, DateCreated as Created FROM MyTable;

複数の SQL ステートメントを配列に分割

書式設定とは関係なく、分割できる機能もあります。複数の SQL ステートメントを配列に分割する SQL ステートメントは配列に分割されます。

例:

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

結果:

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

正規表現を使用しないのはなぜですか?

README~

https://github.com/jdorn/sql-formatter#why...

を読んでください。

以上がPHP での SQL ステートメントのフォーマットとハイライト表示の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はlearnku.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。