元のシステムの SQL 形式は次のとおりです:
select * from 'table';
今日オンラインになった後、次のことがわかりました:
他の理由によるものです (ここには記載されていません)。
すべてのデータ テーブルの名前を変更し、すべてのデータ テーブルに「nbx_table」というプレフィックスを付ける必要があります
どうすればよいですか?
まず、もう一度システムを変更しますか?大変じゃないですか?
第二に、次回このようなことが起こらないようにするにはどうすればよいでしょうか?
第三に、次のような cms を作成する利点は何ですか:
$this->FLInfos = $this->dsql->GetOne("SELECT * FROM `#@__freelist` WHERE aid='$fid' ");
一部のオープンソース プロジェクト (CMS、BLOG、Wiki、フレームワークなど) はデータにプレフィックスを追加しますテーブル 理由は次のとおりです:
他のアプリケーション システムとの競合を防止します。
レンタルスペースに自分でデータベースを作成することはできません。スペースに複数のプロジェクトが配置されている場合、テーブル名が競合する可能性が非常に高くなります。
まずは、またシステム変更?大変じゃないですか?
これはデータベースへのアクセス方法によって異なります。たとえば、Hibernate と MyBatis ではソース コードを変更する必要はなく、マッピング ファイルを直接変更するだけです。
JDBC を使用してソースコード内に SQL 文を記述する場合、ソースコード内の SQL 文を繰り返し修正する以外に方法はありません。
次に、次回このようなことが起こらないようにするにはどうすればよいでしょうか?
MyBatis や Hibernate などのデータベース永続層フレームワークを使用してみてください。
第三に、次のような cms を書く利点は何ですか: "SELECT * FROM `#@__freelist` WHERE aid='$fid' "
この SQL をよく見てください、#@__freelist の前に記号があります。など、これは実際には最後です。SQL ステートメントを生成するときは、問題を解決できる構成ファイルで指定された変数に置き換える必要があります。