php 5 及以上版本建議使用以下方式連線 mysql :
mysqli extension (「i」 意為 improved)
pdo (php data objects)
pdo 應用在 12 種不同資料庫中, mysqli 只針對 mysql 資料庫。
二者都支援預處理語句,可防止sql注入。
**示例:
<?php
$servername
="localhost"
;$username
="username"
;$password
="password"
;try
catch
(pdoexception $e
)?>
由於pdo支援多種型別的資料庫,因此我們將資料庫型別、位址、名稱封裝在資料來源dsn中
$dsn
=":host=;dbname="
;
new
pdo(資料來源, 使用者名稱,密碼)
;
$sql
="insert into 表名稱 values (值1, 值2,....)"
;$num
=$pdo
->
exec
($sql);
//使用exec語句執行sql語句,返回受影響的行數。
$insertid
=$pdo
->
lastinsertid()
;//pdo::lastinsertid — 返回最後插入行的id或序列值if(
$number
>0)
使用pdo::query()獲取結果集;
查詢結果放在pdostatement物件中;
查詢單條記錄:$result->fetch()
獲取所有記錄:$result->fetchall()
直接遍歷結果集:foreach($result as $row)
將結果集對映到物件再遍歷:類名與表名一致,屬性與欄位名一致,通過 _get() 魔術方法實現查詢
setfetchmode(pdo::fetch_assoc) 讀取模式: 從結果集中獲取以列名為索引的關聯陣列
pdostatement::fetch()解析結果集
pdostatement類中的fetch()方法可以將結果集中當前的記錄以某種方式返回,並將結果集指標移至下一行,當到達結果集末尾時返回false
$sql
="select 列名稱 from 表名稱"
$result
=$pdo
->
query
($sql);
if($result
&&$result
->
rowcount()
)
fetchall()方法與上乙個方法fetch()類似,但是該方法只需要呼叫一次就可以獲取結果集中的所有行,並賦給返回的陣列(二維)
$result
->
setfetchmode
(pdo::
fetch_assoc);
$rows
=$result
->
fetchall()
;//將結果集轉為二維陣列
foreach
($rows
as$row
)
也可跳過fetch解析,直接操作結果集
$result
->
setfetchmode
(pdo::
fetch_assoc);
$foreach
($result
as$row
)
pdo::fetch_class 返回乙個請求類的新例項,對映結果集中的列名到類中對應的屬性名
class
student
}$result
->
setfetchmode
(pdo::
fetch_class,』student')
;
將靜態sql語句與動態資料分離,在sql語句中使用佔位符"?「或」:欄位名"
pdo::prepare()準備預處理語句;
execute([真實替換資料])執行預處理語句
佔位符":欄位名"
$sql
="select 欄位名1=:欄位名1, 欄位名2=:欄位名2 from 表名稱"
;$stmt
=$pdo
->
prepare
($sql);
$stmt
->
bindparam
(":欄位名1"
,$value1);
$stmt
->
bindparam
(" :欄位名2 "
,$value2);
//給變數賦值
$stmt
->
execute()
;
佔位符"?"$sql
="select ?, ? from 表名稱"
;$stmt
=$pdo
->
prepare
($sql);
$stmt
->
bindparam(1
,$value1);
$stmt
->
bindparam(2
,$value2);
//給變數賦值
$stmt
->
execute()
;
PHP中PDO的基本操作二
在介紹完pdo的基本操作之後,我們利用封裝連線和讀寫操作,實現對資料庫的讀寫操作。下面是封裝方法 function.php pdo物件初始化 function init 設定字符集 res pdo exec set names utf8 echo res if res false 返回pdo物件 r...
PDO基本操作
今天了解到了一些新的內容 pdo通過學習了解到了幾點。pdo是一種運算元據庫的方式。應為現在本人用的是mysqli。之前使用mysqli的時候,針對的是mysql。所以在使用的時候也沒發現有任何問題,在了解過pdo之後發現mysqli還有很多侷限性。pdo可以適用於多種資料庫,有編碼統一性 物件導向...
PDO基本操作
pdo是php資料物件 php data object 的縮寫。pdo有非常多的操作卻是mysqli擴充套件庫所不具備的優勢 pdo 支援12中資料驅動和引數繫結,而 mysqli 只支援 mysql。pdo 支援更高階的db特性操作,如 儲存過程的排程等,mysql原生庫是不支援的。pdo 是ph...