pdo判斷連線mysql PDO 連線mysql

2021-10-18 12:28:32 字數 2722 閱讀 7100

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

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

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

/*新增*/

//$sql = "insert into `user` set `login`=:login and `password`=:password";

$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_'"; //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))catch(pdoexception$e)catch(exception$e)   // if there is a problem we can handle it here

catch (pdoexception $e)   catch (exception $e) {

$dbh->rollback();

echo "failed: " . $e->getmessage();

pdo常用方法:

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 pdo手冊 使用PDO操作MySQL

pdo擴充套件為php訪問資料庫定義了乙個輕量級的 一致性的介面,它提供了乙個資料訪問抽象層,這樣,無論使用什麼資料庫,都可以通過一致的函式執行查詢和獲取資料。pdo支援的php版本為php5.1以及更高的版本,而且在php5.2下pdo預設為開啟狀態,下面是在php.ini中pdo的配置 exte...

PDO持久化連線

pdo new pdo dsn,username,password,array pdo attr persistent true 建立pdo持久化連線只需要在pdo建構函式的第4個引數 該引數為可選引數,是乙個包含多個驅動選項引數的陣列 中設定鍵名pdo attr persistent的值為true...

通過PDO 連線SQL Server

pdo的各種庫都可以在pecl中找到,例如,mysql庫 pdo mysql oracle庫 pdo oci。如果安裝成功的話,usr lib64 php modules 非64位主機應該在 usr lib 目錄中會多出pdo dblib.so庫 如下圖 下面需要將pdo dblib.so庫與php...