ホームページ  >  記事  >  バックエンド開発  >  簡単な PHP 作成データベース クラス コード共有_PHP チュートリアル

簡単な PHP 作成データベース クラス コード共有_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:25:39755ブラウズ

エッセイにオリジナリティを含めるべきかどうかわかりません。
それでは、最初のブログ投稿です。
3 つのクラスがあります:
1. フィルター入力 (軽量)
input_filter クラス
$_GET、$_POST などのパラメーターのフィルター処理を担当します
戻り値の型は、made_sql クラスのパラメーターとして使用されます
2. SQL文に変換
class made_sql
パラメータの型は配列とテーブル名(文字列)、配列のキー名はテーブルのカラム名、値は挿入値
戻り値の型は文字列、mysql ->query メソッドのパラメーターとして使用されます
3. データベース クエリ
mysql クラス
単一列モードを使用し、静的メソッドを使用してオブジェクトを取得します。詳細については、instanceof 演算子の関数を参照してください

コードをコピーします コードは次のとおりです:

class input_filter
{
private $ input_all; // フィルターされる配列
private $rustle; // フィルターされた結果
// コンストラクターのパラメーターは $_GET または $_POST これらの
関数です__construct($input_C)
{
if(is_array($input_C ))
$this->input_all = $input_C ;
else
echo 'パラメータが無効です'
//そうでない場合、PHP は型を認識しません。初めて配列をマージするときです
$this->rustle = array();
}
private function filter_arr() // Main function
{
foreach ($this->input_all as $key_input => $val_input)
{
//キー名が文字列でない場合は、エラー メッセージ
// キーの場合
if(!is_string($key_input)) // エラー
{
echo 'このキーは文字列ではありません' ;
return false;
}
// # は mysql です
$ key_one = str_replace('#','',$key_input); ;
// # の HTML エスケープ文字が見つからなかったので、代わりに empty を使用しました
// この関数は ' のみを変換します" には、すべてのシンボルをエスケープする同様の関数があります
$val = htmlspecialchars($val_one, ENT_QUOTES,'UTF-8');
//merge
$rustle_one = array($key=>$val);
/ /Merge array
$this->rustle = array_merge($this->rustle, $rustle_one);
}
}
//この関数は少し冗長なので、将来の拡張のために残されています
public function get_filter_rustle()
{
$this->filter_arr();
return $this->rustle ;
}
}


メソッドの呼び出し:


コードは次のとおりです: $filter = new filter_input($_GET); // または $_POST $input_data = $filter->get_filter(); Q s SQL ステートメントに変換します:


コードをコピーします
コードは次のとおりです:

Class Madesql
{ private $ cnow_ary; // 配列パラメータの型 Private $ CNAME_STR; /最後の SQL ステートメントの文字列型 public function __construct($Cary,$Cname) {
// 受け取ったパラメータの型が配列かどうかを確認します
if (! is_array($Cary))
return false;
else
$this ->Cnow_ary = $Cary; // 書き込まれた値
$this->Cname_str = $Cname; // データベーステーブル名
25 }
private function setSql; () // メイン関数、SQL ステートメントを生成します
{
foreach ( $this->Cnow_ary as $key_ary => $val_ary )
{
$cols_sql = $cols_sql.','.$key_ary; // 列名combin
$vals_sql = $vals_sql.', ''. $val_ary.''' ; //値の組み合わせ
}
// 前の foreach アルゴリズムに問題があるため、最初の文字はカンマです
// sunstr_replace() を使用して、最初の位置 (0) から開始して削除し、1 文字だけを置換します (1)
$cols_sql = substr_replace($vals_sql,'',0,1);
$vals_sql = substr_replace($vals_sql,' ',0,1);
$this->insert_sql =
' INSERT INTO '.$this->Cname_str.' ( '
.$cols_sql.' ) VALUES ( '.$vals_sql.' )' / / ステートメントの整形
}
//
public function getSql()
{
$this->setSql();
return $this->insert_sql;


3.この本では、データベース クエリ クラスはシングルカラム モードを指します (このように静的メソッドを使用してオブジェクトを取得します。スクリプトにはデータベース クエリ クラスのインスタンスが 1 つだけあります)
このクラスではシングルトン パターンが依然として役立つと思います



コードをコピーします

コードは次のとおりです:

class mysql
{
private $connect;
static $objectMysql; // オブジェクトを保存します
private function __construct() 7 {
// このコンストラクターは、オブジェクトを作成して初期化するときに呼び出されます
$connect = mysql_connect (' db address','password','dbname');
$this->db = mysql_select_db('db',$connect)
}
public static function Mysql_object()
{
//instanceof 演算子オブジェクトがクラスまたはインターフェイスのインスタンスに属しているかどうか。私が言ったことはあまり標準的ではありません...
//$objectMysql が mysql(self) のインスタンスではない場合は、インスタンスを作成します
if(! self::$objectMysqlinstanceof self)
self::$objectMysql = new mysql () ;
//この時点では、$objectMysql はすでにオブジェクトです
return self::$objectMysql;
}
public function query($sql)
{
return mysql_query($sql,$this->db) ;
}
}


それでは、使い方をまとめます
コードをコピーします コードは次のとおりです。 input_data = $filter->get_filter();
$madeSql = 新しい madesql($input_data,'tableName');
$mysql = mysql::Mysql_object();
if( $mysql ->query($sql) )
echo 'Ok';
else
echo 'failure';


データベースへの書き込み操作を完了するには、これらの数行のコードのみが必要です
さらに、コンストラクターのプライベートとパブリックのプロパティについて話しましょう。 問題は、本では MySQL シングルトン モードのコンストラクターがプライベートとして宣言されているのですが、シングルトン モードがない場合、コンパイル エラーが発生することです。確認したところ、PHPではオブジェクトを作成できませんでした。

その理由は、オブジェクトの作成がクラスの外で行われることが多く、コンストラクターにアクセスできないという問題が発生するためです。 単一列モードでは、独自のクラスにオブジェクトが作成されるため、プライベート メソッドへのアクセスに制限はありません。

私は当初、シングルトン モードは同じオブジェクトの作成を防ぐだけだと考えていましたが、シングルトン モードはコンストラクターをカプセル化できるようです。これにより、filter_input クラスの結果を直接使用できるという前提が得られます。 madesql クラスのパラメータは次のとおりです:
フォームの名前はデータベースの列名と同じである必要があります。そうしないと、多くのことが無駄になります。



http://www.bkjia.com/PHPjc/324106.html

www.bkjia.com

tru​​e

技術記事エッセイにオリジナリティを含めるべきだとは知りませんでした。さて、最初のブログ投稿です。 3 つのクラスがあります: 1. フィルター入力 (軽量) クラス input_filter は、$_GET、$_POST... などのパラメーターのフィルター処理を担当します。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。