PDO之mysql的基本用法

2021-06-29 15:50:23 字數 3233 閱讀 5031

<?php

$dbh = new pdo('mysql:host=localhost;dbname=test_pdo', 'root', '');

$dbh->setattribute(pdo::attr_errmode, pdo::errmode_exception);

$dbh->exec('set names utf8');

/*新增*/

$sql = "insert into `user` (`login` ,`password`)values (:login, :password)";

$stmt = $dbh->prepare($sql);

$stmt->execute(array(':login'=>'kevin2',':password'=>''));

echo $dbh->lastinsertid();

/*修改*/

$sql = "update `user` set `password`=:password where `user_id`=:userid";

$stmt = $dbh->prepare($sql);

$stmt->execute(array(':userid'=>'7', ':password'=>'4607e782c4d86fd5364d7e4508bb10d9'));

echo $stmt->rowcount();

/*刪除*/

$sql = "delete from `user` where `login` like 'kevin_'";

$stmt = $dbh->prepare($sql);

$stmt->execute();

echo $stmt->rowcount();

/*查詢*/

$login = 'kevin%';

$sql = "select * from `user` where `login` like :login";

$stmt = $dbh->prepare($sql);

$stmt->execute(array(':login'=>$login));

while($row = $stmt->fetch(pdo::fetch_assoc))

print_r( $stmt->fetchall(pdo::fetch_assoc));

?>

建立連線
<?php

$dbh=newpdo('mysql:host=localhost;port=3306; dbname=test',$user,$pass,array(pdo::attr_persistent=>true));

?>

永續性鏈結pdo::attr_persistent => true

捕捉錯誤

<?php

trycatch(pdoexception$e)

?>

處理事務

<?php

trycatch(exception$e)

?>

錯誤處理

$dbh->setattribute(pdo::attr_errmode,pdo::errmode_silent); //不顯示錯誤

$dbh->setattribute(pdo::attr_errmode, pdo::errmode_warning);//顯示警告錯誤,並繼續執行

$dbh->setattribute(pdo::attr_errmode,pdo::errmode_exception);//產生致命錯誤,pdoexception

<?php

try

}catch(pdoexception $e)

?>

pdo::query()主要用於有記錄結果返回的操作(pdostatement),特別是select操作。

pdo::exec()主要是針對沒有結果集合返回的操作。如insert,update等操作。返回影響行數。pdo::lastinsertid()返回上次插入操作最後一條id,但要注意:如果用insert into tb(col1,col2) values(v1,v2),(v11,v22)..的方式一次插入多條記錄,lastinsertid()返回的只是第一條(v1,v2)插入時的id,而不是最後一條記錄插入的記錄id。

pdostatement::fetch()是用來獲取一條記錄。配合while來遍歷。

pdostatement::fetchall()是獲取所有記錄集到乙個中。

pdostatement::fetchcolumn([int column_indexnum])用於直接訪問列,引數column_indexnum是該列在行中的從0開始索引值,但是,這個方法一次只能取得同一行的一列,只要執行一次,就跳到下一行。因此,用於直接訪問某一列時較好用,但要遍歷多列就用不上。

pdostatement::rowcount()適用於當用query("select ...")方法時,獲取記錄的條數。也可以用於預處理中。$stmt->rowcount();

pdostatement::columncount()適用於當用query("select ...")方法時,獲取記錄的列數。

註解:1、選fetch還是fetchall?

小記錄集時,用fetchall效率高,減少從資料庫檢索次數,但對於大結果集,用fetchall則給系統帶來很大負擔。資料庫要向web前端傳輸量太大反而效率低。

2、fetch()或fetchall()有幾個引數:

mixed pdostatement::fetch([int fetch_style [,int cursor_orientation [,int cursor_offset]]])

array pdostatement::fetchall(int fetch_style)

fetch_style引數:

■$row=$rs->fetchall(pdo::fetch_both); fetch_both是預設的,可省,返回關聯和索引。

■$row=$rs->fetchall(pdo::fetch_assoc); fetch_assoc引數決定返回的只有關聯陣列。

■$row=$rs->fetchall(pdo::fetch_num); 返回索引陣列

■$row=$rs->fetchall(pdo::fetch_obj); 如果fetch()則返回物件,如果是fetchall(),返回由物件組成的二維陣列

mysql 的基本用法 mysql基本用法

mysql 5.1 中文參考手冊 show databases 顯示資料庫 drop database 資料庫名 刪除資料庫 set names utf8 設定資料庫編碼為utf 8 source x 資料庫名.sql 匯入乙個資料庫 use 資料庫名 嘗試訪問資料庫 create database...

mysql 的基本用法 mysql基本用法

mysql 5.1 中文參考手冊 show databases 顯示資料庫 drop database 資料庫名 刪除資料庫 set names utf8 設定資料庫編碼為utf 8 source x 資料庫名.sql 匯入乙個資料庫 use 資料庫名 嘗試訪問資料庫 create database...

pdo的用處,用法

pdo主要是用來對資料庫進行訪問的。pdo擴充套件為php訪問資料庫定義了乙個輕量級的一致介面,不同資料庫在訪問時,採用相同方法名稱,解決了連線資料庫不統一問題。pdo擴充套件自身並不能實現任何資料庫功能,必須使用乙個具體資料庫的pdo驅動來訪問資料庫服務。pdo特點 效能 比傳統和原生訪問資料庫方...