復(fù)制代碼 代碼如下:
 
class input_filter 
{ 
private $input_all; // 要過(guò)濾的數(shù)組 
private $rustle; // 過(guò)濾后的結(jié)果 
//構(gòu)造函數(shù) 參數(shù)可以是$_GET or $_POST 這些 
public function __construct($input_C) 
{ 
if(is_array($input_C)) 
$this->input_all = $input_C ; 
else 
echo 'Parameter is not valid'; 
//初始化,不然后面第一次合并數(shù)組PHP不知道這是什么類型 
$this->rustle = array(); 
} 
private function filter_arr() // 主函數(shù) 
{ 
foreach ($this->input_all as $key_input => $val_input) 
{ 
//如果鍵名不是字符串,那么返回錯(cuò)誤信息 
// 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'); 
// 我沒(méi)找 # 的HTML轉(zhuǎn)義符,所以用空代替 
$val_one = str_replace('#','',$val_input); 
// 這個(gè)函數(shù)只轉(zhuǎn)化 < > ' " ,還有個(gè)類似函數(shù)會(huì)轉(zhuǎn)義所有符號(hào) 
$val = htmlspecialchars($val_one,ENT_QUOTES,'UTF-8'); 
// merger 
$rustle_one = array($key=>$val); 
//合并數(shù)組 
$this->rustle = array_merge($this->rustle,$rustle_one); 
} 
} 
//這個(gè)函數(shù)有點(diǎn)多余,留下以后擴(kuò)展用 
public function get_filter_rustle() 
{ 
$this->filter_arr(); 
return $this->rustle ; 
} 
} 
復(fù)制代碼 代碼如下:
 
$filter = new filter_input($_GET) ; // or $_POST 
$input_data = $filter->get_filter(); 
復(fù)制代碼 代碼如下:
 
class madesql 
{ 
private $Cnow_ary; // type array 傳入的參數(shù) 
private $Cname_str; 
private $insert_sql; //最終的sql語(yǔ)句 string type 
public function __construct($Cary,$Cname) 
{ 
//檢查傳入?yún)?shù)類型是否為數(shù)組 
if (! is_array($Cary)) 
return false; 
else 
$this->Cnow_ary = $Cary; // 寫入的值 
$this->Cname_str = $Cname; // 數(shù)據(jù)庫(kù)表名稱 
25 } 
private function setSql() // 主函數(shù) ,生產(chǎn)SQL語(yǔ)句 
{ 
foreach ( $this->Cnow_ary as $key_ary => $val_ary ) 
{ 
$cols_sql = $cols_sql.','.$key_ary; //列名組合 
$vals_sql = $vals_sql.', /''.$val_ary.'/'' ; //值 組合 
} 
// 因?yàn)榍懊鎓oreach的算法有點(diǎn)問(wèn)題,第一個(gè)字符是逗號(hào) 
// 所以用sunstr_replace()刪除 ,自第一位起(0),只替換一個(gè)字符(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.' )'; // 語(yǔ)句成型 
} 
//擴(kuò)展用 
public function getSql() 
{ 
$this->setSql(); 
return $this->insert_sql; 
} 
} 
復(fù)制代碼 代碼如下:
 
class mysql 
{ 
private $connect; 
static $objectMysql; // 存放對(duì)象 
private function __construct() 7 { 
// 創(chuàng)建對(duì)象的時(shí)候這個(gè)構(gòu)造函數(shù)會(huì)被調(diào)用,用來(lái)初始化 
$connect = mysql_connect('db address','password','dbname'); 
$this->db = mysql_select_db('db',$connect); 
} 
public static function Mysql_object() 
{ 
//instanceof 操作符用于檢查對(duì)象是否屬于某個(gè)類或者接口的實(shí)例。我說(shuō)的不是很規(guī)范... 
//如果$objectMysql不是mysql(self)的實(shí)例,那么就創(chuàng)建一個(gè) 
if(! self::$objectMysql instanceof self) 
self::$objectMysql = new mysql(); 
//這時(shí)候的$objectMysql就已經(jīng)是一個(gè)對(duì)象 
return self::$objectMysql; 
} 
public function query($sql) 
{ 
return mysql_query($sql,$this->db); 
} 
} 
   
復(fù)制代碼 代碼如下:
 
$filter = new filter_input($_GET) ; // or $_POST 
$input_data = $filter->get_filter(); 
$madeSql = new madesql($input_data,'tableName'); 
$sql = $madeSql->getSql(); 
$mysql = mysql::Mysql_object() ; 
if( $mysql->query($sql) ) 
echo 'Ok'; 
else 
echo 'failure'; 
新聞熱點(diǎn)
疑難解答