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
true
http://www.bkjia.com/PHPjc/324106.html技術記事エッセイにオリジナリティを含めるべきだとは知りませんでした。さて、最初のブログ投稿です。 3 つのクラスがあります: 1. フィルター入力 (軽量) クラス input_filter は、$_GET、$_POST... などのパラメーターのフィルター処理を担当します。