簡単なphpはデータベース種類のコードを書き込みます。
4360 ワード
オリジナルを知らないで随筆に書きます。All right、最初のブログ。3つのクラスがあります。1.フィルタ入力(軽量級の)クラスinput_filterはパラメータを担当しています。GET,$POSTこれらのフィルタの戻り値の種類は配列であり、made_として使用される。sql類のパラメータ2.SQL文class made_に変換します。sqlパラメータの種類は配列と表名(文字列)であり、配列のキー名は表の列名であり、値は挿入値戻り値の種類は文字列であり、mysql->query方法のパラメータとして使用されます。データベースクエリーclass mysqlは単列モードを使用して、静的方法でオブジェクトを取得します。具体的な参照instance ofオペレータの役割
class input_filter
{
private $input_all; //
private $rustle; //
// $_GET or $_POST
public function __construct($input_C)
{
if(is_array($input_C))
$this->input_all = $input_C ;
else
echo 'Parameter is not valid';
// , PHP
$this->rustle = array();
}
private function filter_arr() //
{
foreach ($this->input_all as $key_input => $val_input)
{
// ,
// for key
if(!is_string($key_input)) // error
{
echo 'This key is not string';
return false;
}
// The # is mysql Note .
$key_one = str_replace('#','',$key_input);
$key = htmlspecialchars($key_one,ENT_QUOTES,'UTF-8');
// # HTML ,
$val_one = str_replace('#','',$val_input);
// < > ' " ,
$val = htmlspecialchars($val_one,ENT_QUOTES,'UTF-8');
// merger
$rustle_one = array($key=>$val);
//
$this->rustle = array_merge($this->rustle,$rustle_one);
}
}
// ,
public function get_filter_rustle()
{
$this->filter_arr();
return $this->rustle ;
}
}
呼び出し方法:
$filter = new filter_input($_GET) ; // or $_POST
$input_data = $filter->get_filter();
SQL文に変換:
class madesql
{
private $Cnow_ary; // type array
private $Cname_str;
private $insert_sql; // sql string type
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; //
$vals_sql = $vals_sql.', \''.$val_ary.'\'' ; //
}
// foreach ,
// sunstr_replace() , (0), (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;
}
}
.データベースクエリクラスは参照書の単一列モード(静的方法でオブジェクトを取得し、このようにシナリオの中にはデータベースクエリクラスの一例しかないと思います。このタイプに使うのはちょっと役に立つと思います。All rightをまとめてみます。使い方は
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::$objectMysql instanceof self)
self::$objectMysql = new mysql();
// $objectMysql
return self::$objectMysql;
}
public function query($sql)
{
return mysql_query($sql,$this->db);
}
}
です。これらのコードを呼び出すだけで、データベースに書き込める操作ができます。また、コンストラクションのプライベート共有問題を説明してください。本のmysqlの一例のモードの中で構造関数はprvateのために声明していますが、一例のモードの種類がないとコンパイルエラーが発生します。つまりPHPはオブジェクトを作成できません。調べてみました。作成対象はしばしばクラス外で行われるため、構造関数にアクセスできない問題が発生します。一方、シングルモードは自分のクラスでオブジェクトを作成するので、prvateにアクセスする方法には制限がありません。一例のモードは同じオブジェクトの作成を防ぐだけだと思っていましたが、今は一例のモードで構成関数をパッケージ化することができ、安全性を向上させました。inputクラスの結果は直接madesqlクラスのパラメータとして使用できる前提は、フォームのnameはデータベースの列名と同じでなければなりません。