## class DB
數據庫類
**使用說明:**
大家知道php5.3之后已經沒有`magic_quotes_gpc`這個參數了
這個參數開啟主要是對 `'` `"`的轉義,防止sql注入
沒有這個參數難道我們就要給全部的GPC變量進行`addslashes()`?php升級反給開發者帶來了不便?
其實不是這樣的,因為pdo已經推出很久了,pdo預處理會自動對數組參數進行轉義的,
如果`magic_quotes_gpc=on`,php會對GPC轉義一次,使用pdo數組參數的時候就還會2次,這種重復轉義會導致插入數據庫的數據與我們提交的不一樣。所以才取消了`magic_quotes_gpc`。
所以,最好的方式就是關閉`magic_quotes_gpc`,使用pdo的預處理來執行mysql命令,phpstart也內置了函數庫來兼容不支持pdo的php環境:
~~~
'PHPstart/__Function/pdo.func.php'
'PHPstart/__Class/DB.class.php'
~~~
如果你要使用pdo的預處理,請確保`magic_quotes_gpc=off`,pdo也只對數組參數進行轉義,字符串的sql命令并不會再轉義,所以在組裝sql命令的時候請注意手動`addslashes()`!!!
我們也提供更簡單的接口`X()`,讓你在寫代碼的時候更省時省力。
~~~
$sql = "select * from user where username='".X($_GET['username'])."'";
~~~
* * * * *
**pdo接口使用方法**
~~~
PS::sysClass('DB',0);
$con = new DB($conname);//缺省參數是mater ,對應database.ini.php的配置
$con->fetch($sql,$param);//查詢
//忘記上面這個方法吧,推薦使用下面的函數,更便捷↓
$con = pdo($conname);//$conname缺省參數是mater ,對應database.ini.php的配置
$con->fetch($sql,$param);//查詢
或著可以再簡單點↓
pdo($conname)->fetch($sql,$param);//$conname缺省參數是mater ,對應database.ini.php的配置
//更多pdo的教程請網上搜索
~~~
pdo() 返回一個數據庫鏈接對象,參數是鏈接名,默認是master,
默認鏈接名可以通過常量DEFAULT_DB定義,也可以通過pdo('master')函數的第一個參數傳遞。數據庫鏈接信息請在配置文件中修改。
配置文件:__Config/database.ini.php
更多說明請參考 'PHPstart/__Function/pdo.func.php'