ホームページ >バックエンド開発 >PHPチュートリアル >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('SqlFormatter.php'); $query = "SELECT count(*),`Column1`,`Testing`, `Testing Three` FROM `Table1` WHERE Column1 = 'testing' AND ( (`Column2` = `Column3` OR Column4 >= NOW()) ) GROUP BY Column1 ORDER BY Column3 DESC LIMIT 5,10"; echo SqlFormatter::format($query);
出力:
##強調表示なしの書式設定のみ
ハイライトは必要なく、インデントと改行を追加するだけで済みます。2 番目のパラメータを false に設定してください。 エラー ログやその他の非 HTML データの出力に適しています。<?php echo SqlFormatter::format($query, false);出力:
書式設定なしでハイライトのみを行う
ハイライトという名前の別のメソッドがあります。元の形式は変更されず、構文の強調表示のみが追加されることを意味します。 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 サイトの他の関連記事を参照してください。