SQLToolsプラグイン(その2・SQLの入力)

SQLToolsプラグインでデータを読み込むには、まずそのためのSQLを入力することから始めます。
その手順を解説します。

1.権限の設定

システム管理者以外のユーザーに、SQLの作成を許可するには、そのユーザーに権限を与える必要があります。
このプラグインをインストールすると、システムレベルとウェブサイト/ブログレベルに、「SQLクエリの管理」という権限が追加されます。

1-1.システムレベルの権限の設定

システムで共通に使うSQLをユーザーに作成させたい場合は、そのユーザーにシステムレベルの「SQLクエリの管理」権限を与えます。

ユーザーにシステムレベルの「SQLクエリの管理」権限を与える

1-2.ウェブサイト/ブログレベルの権限の設定

個々のウェブサイト/ブログで使うSQLをユーザーに作成させたい場合は、以下の手順を取ります。

  • 既存のロールを編集するか、もしくは新規のロールを作成して、「SQLクエリの管理」権限を与えます。
  • このロールを、対象のユーザーおよび対象のウェブサイト/ブログに対して割り当てます。

ロールにウェブサイト(ブログ)レベルの「SQLクエリの管理」権限を与える

なお、Movable Type標準の「ブログ管理者」と「ウェブサイト管理者」のロールには、「SQLクエリの管理」の権限も与えられます。

2.SQLの入力

ユーザーに与えた権限に応じて、ブログ(またはウェブサイト/システム)の管理画面のメニューに「SQLクエリ」が追加されます。
「SQLクエリ」→「新規」のメニューをクリックすると、SQLを入力するページが開きます。
このページで、以下の各欄に入力します。

項目内容
SQLクエリの名前SQLの内容を簡潔に表すような名前を決めて入力します。
テンプレートタグでSQLを実行する際に、この名前を使います。
SQLクエリ実行したいSQLの文を入力します。
SQLクエリの概要SQLの概要の文章を入力します。
概要の入力はオプションです。

3.SQLの組み方

読み込んだデータを、Movable Typeのオブジェクトとして扱いたい場合は、オブジェクトのIDだけを返すようなSQLを組みます。
一方、一般のSQLを実行して結果を得たい場合は、SQLの組み方には特に制限はありません。

SQLインジェクションを防ぐために、プリペアドステートメントの仕組みを利用しています。
SQLの中で、状況に応じて変化する値は、プレースホルダ(?)で表すことができます。

また、SQLの中にMovable Typeのテンプレートタグを書くこともできます。
ただし、状況によっては(特に、第三者が入力したデータを基にSQLを組む場合)、SQLインジェクションが起こることがあり得ますので、可能な限りプレースホルダを使うことを推奨します。

なお、実際のSQLの例は、明日以降の記事で解説します。