首頁 >後端開發 >php教程 >php操作MySQL資料庫之PDO方式

php操作MySQL資料庫之PDO方式

不言
不言原創
2018-06-06 09:34:481493瀏覽

這篇文章主要介紹了關於php操作MySQL資料庫之PDO方式,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

##基本上使用

1)連接資料庫

$pdo = new PDO(“mysql:host=localhost; dbname=db_name”,username,password);

2)執行SQL語句

$pdo -> query()    针对返回有结果的操作    适用于SELECT

$pdo -> exec()     针对没有返回结果的操作  适用于增删改

3)取得結果集(查詢操作專有)

$stmt -> fetch($mode)      获取一条数据

$stmt -> fetchAll($mode)   获取所有数据

mode可選擇PDO::FETCH_ASSOC,結果變成

關聯數組

實例

<?php

// PDO操作数据库例子(查询)

header("content-type:text/html;charset=utf-8");

// 连接数据库
$dsn = "mysql:host=localhost; dbname=test";

$pdo = new PDO($dsn,&#39;root&#39;,&#39;123456789&#39;);


/*********** 执行SQL语句  *************/

// 设置字符集
$pdo -> exec("set names utf8");

$sql = "SELECT * FROM users";
$stmt = $pdo -> query($sql);

// 获取结果集
$data = $stmt -> fetchAll(PDO::FETCH_ASSOC);

var_dump($data);

事務控制

1)開啟交易

$pdo -> beginTransaction()

2)事務回滾

$pdo -> rollback()

3)事務提交

$pdo -> commit()

4)自動提交

$pdo -> setAttribute(PDO::ATTR_AUTOCOMMIT,1)

實例

 exec("set names utf8");

// 开启事务
$pdo -> beginTransaction();

// SQL语句
$sql1 = "UPDATE users SET `money`=`money`+1 WHERE `id` = 1 ";
$r1 = $pdo -> exec($sql1);

$sql2 = "UPDATE users SET `money`=`money`-1 WHERE `id` = 12 ";
$r2 = $pdo -> exec($sql2);

// 做判断
if($r1 > 0 && $r2 > 0){
    $pdo -> commit();
    echo '操作成功';
}else{
    $pdo -> rollback();
    echo '操作失败';
}

$pdo -> setAttribute(PDO::ATTR_AUTOCOMMIT,1);

預處理

1)$sql = “???”

SQL語句的VALUE裡面的參數,使用問號來代替。

2)建立預編譯物件

$pdo -> prepare($sql)

3)參數賦值

$stmt -> bindParam(参数位置 | 参数伪名, 变量名(需要有值)) 

$stmt -> bindValue(参数参数位置 | 参数伪名, 变量名(需要有值)| 具体的值)

$stmt -> bindParam詳解:

$sql = "UPDATE users SET `money`=100 WHERE id = :num ";

// 注意,这里必须先给$num赋值
$num = 3;
$stmt -> bindParam(":num",$num);


另一种形式(占位符变成问号)
$sql = "UPDATE users SET `money`=100 WHERE id = ? ";

// 注意,这里必须先给$num赋值
$num = 3;
$stmt -> bindParam(":num",$num);

$stmt -> bindValue詳解

在使用bindValue綁定變數後,即使執行execute之前改變了該變數的值,那麼結果也不會改變。

詳細請看這裡這裡寫連結內容

4)執行程式碼

$stmt -> execute()

5)取得結果(查詢操作專有)

$stmt -> fetch($mode)      获取一个结果

$stmt -> fetchAll($mode)   获取所有结果

mode可選擇PDO::FETCH_ASSOC,結果變成

關聯陣列

實例

 exec("set names utf8");


// SQL语句
$sql = "SELECT * FROM users WHERE id > :num ";

// 创建预编译对象
$stmt = $pdo -> prepare($sql);

// 参数绑定
$num = 3;
$stmt -> bindParam(":num",$num);

// 执行SQL语句
$stmt -> execute();

// 获取结果集
$data = $stmt -> fetchAll(PDO::FETCH_ASSOC);

var_dump($data);

相關推薦:

操作MySQL資料庫之MySQLI方式

以上是php操作MySQL資料庫之PDO方式的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn