一 :php鏈接mysqlphp
代碼:mysql
<?php
$servername = "127.0.0.1";
$username = "username";
$password = "password";
try {
$conn = new PDO("mysql:host=$servername;dbname=mysql", $username, $password);
echo "Connected successfully";
}
catch(PDOException $e)
{
echo $e->getMessage();
}
?>sql
二 :insert,update,delete的語法相似,僅僅以insert爲例,將如下代碼扔到try塊中就ok.數組
代碼:fetch
$sql="insert into test values(1,'a')";spa
$num=$conn->exec($sql);.net
echo "影響行數 $num";orm
三: select的語法略微複雜.server
代碼:索引
$sql="select * from test";
$res=$conn->query($sql);
foreach($res as $r){
echo $r["id"] . "<br>" //$r是一個array,咱們僅僅輸出了id列,能夠print_r($r)輸出
}
四 : 還可使用預處理獲取數據(略懂)
PDO::FETCH_ASSOC:返回一個索引爲結果集列名的數組
PDO::FETCH_BOTH(默認):返回一個索引爲結果集列名和以0開始的列號的數組
DOStatement::fetch :從結果集中獲取下一行
代碼(摘自php手冊http://php.net/manual/zh/pdostatement.fetch.php)
方法一
<?php
$stmt = $conn->prepare("SELECT * FROM REGISTRY where name = ?");
if ($stmt->execute())) {
while ($row = $stmt->fetch()) { //默認是 fetch(PDO::FETCH_BOTH)
print_r($row);
print "<br>"; }
}
?>
//輸出 Array ( [id] => 2 [0] => 2 [name]=>"abc" [1]=>"abc")
Array ( [id] => 3 [0] => 3 [name]=>"def" [1]=>"def" )
方法二
<?php
$stmt = $conn->prepare("SELECT * FROM REGISTRY where name = ?");
if ($stmt->execute())) {
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
print_r($row);
print "<br>"; }
}
?>
//輸出 Array ( [id] => 2 [name]=>"abc")
Array ( [id] => 3 [name]=>"def" )
五:事務處理(例子摘自php手冊)
$conn->beginTransaction()/commit()/rollBack() 分別是開啓/提交/回滾一個事務
代碼:
try {
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);//設置錯誤模式爲異常
$conn->beginTransaction();
$conn->exec("insert into staff (id, first, last)
values (23, 'Joe', 'Bloggs')");
$conn>exec("insert into salary(id, amount, changedate)
values (23, 50000, NOW())");
$dbh->commit();
} catch (Exception $e) {
$conn->rollBack();
echo "Failed: " . $e->getMessage();
}
六 : insert的預處理(兩種方法相似)
方法一:
$stmt = $conn->prepare("insert into test values(:id,:name)");
$stmt->bindParam(':id', $id);
$stmt->bindParam(':name', $name);
// 插入行
$id=1;
$name = "Doe";
$stmt->execute();
// 插入其餘行
$id=1;
$name = "Mary";
$stmt->execute();
方法二:
$stmt = $conn->prepare("insert into test values(?,?)");
$stmt->bindParam(1, $id);
$stmt->bindParam(2, $name);
// 插入行
$id=1;
$name = "Doe";
$stmt->execute();
// 插入其餘行
$id=1;
$name = "Mary";
$stmt->execute();