ecshop v2.7.2沒有使用一些開源的資料庫操作類,比如adodb或者pear,而是封裝了自己的實現。這樣做的好處是實現非常輕量,只有乙個檔案,27kb,大大減小了分發包的檔案大小。另外,當**需要做memcached快取時,也可以很方便的實現。當然,這樣做的後果就是資料庫的選擇非常狹窄,無法實現其它的非mysql資料庫。
ecshop的資料操作類檔案是includes/cls_mysql.php,類名是cls_mysql。該類主要提供了下面 一些比較有用的方法:
•getall($sql)和getallcached($sql, $cached = 'filefirst'):獲取所有記錄。•getrow(
$sql, $limited = false)和getrowcached($sql, $cached = 'filefirst'):獲取單行記錄。
•getcol(
$sqlse)和getcolcached($sql, $cached = 'filefirst'):獲取某字段的所有值。
•getone(
$sql, $limited = false)和getonecached($sql, $cached = 'filefirst'):獲取單個數值。
•query(
$sql
):執行資料庫查詢。
•autoexecute(
$table, $field_values, $mode = 'insert', $where = ''):資料庫表操作。
//分頁
$sql = "";
$query = $globals['db']->selectlimit($sql, $record_number, ($page_number - 1) * $record_number
);while ($res = $db->fetch_array($query)){}
現在我們以例項的方式來說明這些方法如何使用。首先,在ecshop/admin目錄下新增檔案test_mysql.php,檔案內容如下:
<?phpdefine('in_ecs', true
); define('ec_charset', 'utf-8');
define('root_path', 'd:/program files/zend/apache2/htdocs/ecshop/');
define('data_dir', 'data');
$db_host = "localhost:3306";
$db_name = "ecshop";
$db_user = "root";
$db_pass = "";
require('../includes/cls_mysql.php');
$db = new cls_mysql($db_host, $db_user, $db_pass, $db_name);
獲取所有記錄
getall方法用來從資料庫中獲取滿足條件的所有記錄。getallcached是它的快取版本,cache key是該方法的第二個引數,如果快取有效,直接返回快取結果,否則重新執行資料庫查詢。
將下面的**加到test_mysql.php的最後:
test_getall();function
test_getall()
修改以後的test_mysql.php執行結果如下:
array( [0] => array
( [user_id] => 1[user_name] =>admin
[email] => [email protected]
)[1] => array
( [user_id] => 2[user_name] =>bjgonghuo1
[email] => [email protected]
)[2] => array
( [user_id] => 3[user_name] =>shhaigonghuo1
[email] => [email protected]
)[3] => array
( [user_id] => 4[user_name] =>amonest
[email] => [email protected]
))
獲取單行記錄
getrow方法用來從資料庫中獲取滿足條件的單行記錄,或者說是第一條記錄。getrowcached是它的快取版本,cache key是該方法的第二個引數,如果快取有效,直接返回快取結果,否則重新執行資料庫查詢。
將下面的**加到test_mysql.php的最後:
test_getrow();function
test_getrow()
修改以後的test_mysql.php執行結果如下:
array( [user_id] => 1[user_name] =>admin
[email] => [email protected]
)
獲取某字段的所有值
getcol方法用來從資料庫中獲取滿足條件的某個欄位的所有值。getcolcached是它的快取版本,cache key是該方法的第二個引數,如果快取有效,直接返回快取結果,否則重新執行資料庫查詢。
將下面的**加到test_mysql.php的最後:
test_getcol();function
test_getcol()
修改以後的test_mysql.php執行結果如下:
array( [0] => [email protected]
[1] => [email protected]
[2] => [email protected]
[3] => [email protected]
)
獲取單個值
getone方法用來從資料庫中獲取滿足條件的單個值。getonecached是它的快取版本,cache key是該方法的第二個引數,如果快取有效,直接返回快取結果,否則重新執行資料庫查詢。
將下面的**加到test_mysql.php的最後:
test_getone();function
test_getone()
修改以後的test_mysql.php執行結果如下:
[email protected]
執行資料庫查詢
query方法用來執行資料庫查詢,例如insert,update,delete等。
將下面的**加到test_mysql.php的最後:
test_query();function
test_query()
修改以後的test_mysql.php執行結果如下:
你有一封新郵件!
資料庫表操作
autoexecute方法用來簡化對資料表的insert和update。
將下面的**加到test_mysql.php的最後:
test_autoexecute();function
test_autoexecute()
修改以後的test_mysql.php執行結果如下:
goods_manage
**
ECShop 資料庫操作類
ecshop v2.7.2沒有使用一些開源的資料庫操作類,比如adodb或者pear,而是封裝了自己的實現。這樣做的好處是實現非常輕量,只有乙個檔案,27kb,大大減小了分發包的檔案大小。另外,當 需要做memcached快取時,也可以很方便的實現。當然,這樣做的後果就是資料庫的選擇非常狹窄,無法實...
ECShop 資料庫操作類
資料庫user sqlemail insert function 目錄 獲取所有記錄 獲取單行記錄 獲取某字段的所有值 獲取單個值 執行資料庫查詢 資料庫表操作 ecshop v2.7.2沒有使用一些開源的資料庫操作類,比如adodb或者pear,而是封裝了自己的實現。這樣做的好處是實現非常輕量,只...
ECShop 資料庫操作類
ecshop v2.7.2沒有使用一些開源的資料庫操作類,比如adodb或者pear,而是封裝了自己的實現。這樣做的好處是實現非常輕量,只有乙個檔案,27kb,大大減小了分發包的檔案大小。另外,當 需要做memcached快取時,也可以很方便的實現。當然,這樣做的後果就是資料庫的選擇非常狹窄,無法實...