ECShop 資料庫操作類

2021-09-07 17:53:25 字數 3796 閱讀 8920

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,檔案內容如下:

<?php

define('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快取時,也可以很方便的實現。當然,這樣做的後果就是資料庫的選擇非常狹窄,無法實...