すべてのテーブルをクエリできる「ユニバーサル」クエリ ページネーション クラス
最近、すべてのテーブルをターゲットにできるクエリ ページング クラスを作成したいと思い立ちました。実際の開発では、結果セットのクエリやページングが最もよく使われるコードだと思いますが、テーブルの構造が多様であるため、コードの再利用率と保守性をできるだけ向上させたいと考えています。
以下は私が書いたものです。より良い改善ができ、より多くのサポートが得られるかどうかを確認するために、いくつかのアドバイスとテストをしてください。
現在、単一のテーブルのみをサポートしており、結合クエリはサポートしていません。しかし、将来的にはそれをどのようにサポートするかを検討する可能性があります。
コード:
/*************************************************** * ************
このクラスは主に多くのテーブルの単純なデータ クエリを解決するために使用され、現在も改良されています。ネチズンがもっとコメントや提案を提供してくれることを願っています。
私の目標は、ほぼすべての mysql テーブルのクエリに適用でき、結果セットをページネーションできるクラスを開発することです。
クエリに表示されるフィールド値を自動的に識別できます。
chinaunix の友人、特に PHP バージョンのネチズンの長期にわたる支援に特別な感謝を表したいと思います。
特に言及したいのは、NightKids です。彼は常に私に無償の支援を提供し、ソース コードも含めて助けてくれました。
このクラスは誰でも自由に参照、使用、変更できます。ただし、このテキストは保管してください。
このクラスの使用によって引き起こされるすべての損失は、作者のtoneraとは何の関係もありません。
一部の複雑な結合クエリについては、クラスを派生して SQL 実装を再構築できることをまだ検討中です。
このクラスはそれ以上の表示スタイルを考慮しません。自分で構築できます。
************************************************ ***** ****************/
class browser{
var $c_table; //クエリ対象のテーブルの名前
var $c_rows;表示
var $c_lation ; //クエリ条件
var $c_order; // クエリデータ接続ハンドル
var $c_query; // 最終的に構築されたクエリ
var $c_found; var $c_error; //エラーコレクター
var $c_offset; //ページングで表示されるオフセット
//データベースに接続
function connect(){
include '../ connect.inc.php';
if ($connection==false){
$this->c_error.="データベースに接続されていません。
";
$this-> c_result =$connection;
}
// コンストラクター、変数を初期化します
関数ブラウザ($tablename,$row,$sql,$lation,$orderby){
$this->c_table=$tablename; >c_rows=$row;
if(empty($this->c_offset)){
$this->c_offset=0;
}
if (empty($tablename) または empty($row) または empty( $sql)){
$ this-> (!empty($lation)){
orderby;
}
}
//総ページ数を計算する
function TatolPage(){
$sult=mysql_query(" select count(*) as 'total_rows' from $this->c_table",$this->c_result);
if ($sult==false) {
$this->c_error.="クエリは失敗しました結果セットの合計数を計算します。確認してください。
";
結果セットを取得し、
関数 GetFound(){ の配列 c_found [][] に格納します。 while ($found=mysql_fetch_array($sult) ){
$this->c_found[ ]=$found; --取る 持つ
$this->GET[オフセット].", ".$this->c_rows;
$sult=mysql_query($this->c_query,$this->c_result) または die(mysql_error());
// クエリを解析し、表示するフィールド値を取得します
$tempvar=explode(" " ,$this->c_query);
$fields=explode(",",$tempvar[1]); // フィールド値 (配列)
个 // データをテーブルに表示します。 gt ;