Zen Cart 資料庫抽象層

2021-05-28 14:40:07 字數 3216 閱讀 8087

下面的查詢語句用來檢索給定商品的型號:

view plain

$theproductid

= 25;  

global

$db;  

$sql

= "select products_model from "

. table_products . 

" where products_id = :productid:"

;  $sql

= $db

->bindvars(

$sql

, ':productid:'

, $theproductid

, 'integer'

);  

$result

= $db

->execute(

$sql

);  if(

$result

->recordcount() > 0)  else  

view plain

global

$db;  

這使得 $db 物件在你的**內可用。($db 物件用來和資料庫對話)。

view plain

$sql

= "select products_model from "

. table_products . 

" where products_id = :productid:"

;  

這將指定你想執行的 sql 查詢語句。你可以參考結構表文件來確定特定的字段和**,或者直接檢視資料庫結構。

table_products 常量用於支援**字首,因為常量會按照位於 /includes/filenames.php 指令碼的邏輯以及你的 /includes/configure.php 檔案中的 db_prefix 值,自動包含字首。

view plain

$sql

= $db

->bindvars(

$sql

, ':productid:'

, $theproductid

, 'integer'

);  

這實質上佔據了前一行(需要執行的查詢語句) $sql 變數內容,並且把所有 :productid: 出現的地方用 $theproductid 的值代替,首先要確保 $theproductid 是乙個整型的數值。(這是出於安全原因,這樣沒有人可以對你的指令碼進行 sql 注入)除了 integer 以外的其它 bindvars 資料型別在下面列出。

view plain

$result

= $db

->execute(

$sql

);  

這行執行了事實的查詢,它的執行結果被儲存在乙個名為 $result 的資料庫物件。

view plain

if($result

->recordcount() > 0)  else  

這將檢查,從查詢語句返回是否有超過0條記錄。如果是,型號的編號將會在螢幕上列印。如果不是,將顯示一條資訊。

乙個列出你資料庫全部貨幣,同時帶有現在配置匯率的簡單例子:

view plain

global

$db;  

$sql

= "select title, code, value, last_updated from "

. table_currencies;  

$result

= $db

->execute(

$sql

);  if(

$result

->recordcount() > 0)   

} else  

view plain

global

$db;  

檢視之前的描述。

view plain

$sql

= "select title, code, value, last_updated from "

. table_currencies;  

將要被執行的 sql 查詢語句。解釋見前面的例子。

注意:在這沒有使用 bindvars(),因為這個查詢語句不需要引數作為選擇標準。

view plain

$result

= $db

->execute(

$sql

);  

執行查詢語句 - 和之前的例子一樣。

view plain

if($result

->recordcount() > 0)   

這告訴它跳到查詢結果的下乙個記錄,然後回到迴圈和輸出。。。重複一直到 while 條件符合 eof(檔案的結尾,查詢結果的結尾)。

view plain

} else  

如果 if 語句失敗,意味著沒有返回結果,然後我們顯示一條資訊。

當你執行一條帶有 insert 語句的查詢的時候,你可以通過引用 $db->insert_id() 來找出你剛插入的新記錄的編號,就像這樣:

view plain

global

$db;  

$sql

= "insert into "

. table_something . 

" (fieldname1, fieldname2) values (:value1:, :value2:)"

;  $sql

= $db

->bindvars(

$sql

, ':value1:'

, $valueone

, 'integer'

);  

$sql

= $db

->bindvars(

$sql

, ':value2:'

, $valuetwo

, 'string'

);  

$result

= $db

->execute(

$sql

);  

$newrecordid

= $db

->insert_id();  

echo

'the new record added was number: '

. $newrecordid

;  

bindvars() 引數可以使用以下的資料型別。實踐中前四種使用最多。

資料庫抽象層 PDO

資料庫抽象層 在資料遷移和專案操作多資料庫時,為了便於操作而提供一種的解決方案。當從乙個資料庫系統向另乙個資料庫系統遷移時,幾乎不用更改太多的程式 如將ms sql server遷移到mysql。規劃必須規範,盡量使用相同的資料進行物件例項化,並且使用相同的資料庫抽象層 如pdo 這樣只需要改變系統...

PDO資料庫訪問抽象層

pdo建構函式說明 dsn資料來源名稱,包括主機名埠號和資料庫名稱 username資料庫使用者名稱 password 密碼 driver options連線資料庫的其他選項 pdo是比mysql更高效,資料庫遷移時基本不用更改太多的 sql語句 pdo exec 返回sql語句後受影響的行數 qu...

初識PDO資料庫抽象層

就是運算元據庫的方法,pdo就是把運算元據庫的函式封裝成乙個pdo類,其間做了安全驗證而已。果要開啟某個pdo直接在php.ini當中啟用即可。直接將分號去除即可 詳細的開啟服務可以在phpinfo下面查詢即可。mysql連線資料庫的方式是 mysql connect localhost root ...