インストーラーを備えた新しい CMS を作成しています。
テーブル名の前にカスタム文字列を付けることを許可しています。
接頭辞付きのテーブル名を使用して SQL を変更する推奨される方法は何ですか?
すべてのクエリに DB_PREFIX を追加する必要がありますか、または後で SQL を変更してデータベース クラスで実行できる方法はありますか?
ありがとう
1 つの手法は、中かっこで囲まれたテーブルを使用してすべての SQL クエリを記述し、これらの中かっこを目的のデータベース プレフィックスに置き換える関数を使用することです。
標準の SQL クエリを記述する代わりに、次のように中括弧などを使用してテーブル名を受け入れます。
//SQL query in your code
$query=prefixQuery("SELECT name FROM {customers} WHERE id=$id");
左 { をプレフィックスに置き換え、右 } を削除する単純な関数を定義します。
define(DB_PREFIX,'myprefix_');
function prefixQuery($query)
{
return str_replace('}','',str_replace('{',DB_PREFIX,$query));
}
はい、すべてのクエリにプレフィックスを追加できます。
次のように、関数 str_replace を使用してすべてのクエリを解析することもできます。
str_replace('mytable', 'prefix_mytable', $Query);
オプション番号1の負荷が少ない方を選びます。
ヒント: 新しい CMS を作成する場合は、DB クラスを提供し、プレフィックスを自動的に追加します。