PDO綜合實例應用

1. query(), fetch(), fetchAll(), rowCount(), exec()綜合應用

<?php
	$dsn="mysql:host=localhost;dbname=guestbook";
	$db=new PDO($dsn,'root','123');     //連接數據庫
	$db->query('set names utf-8');  

	$affected=$db->exec("update lyb set content='用PDO修改記錄' where ID=2014211253");  //exec()返回受影響的記錄數
	echo "<p>共有".$affected."行記錄被修改</p>";

	$result=$db->query('select * from lyb');
	$result->setFetchMode(PDO::FETCH_ASSOC);   //設置fetch()方法爲關聯數組
	var_dump($result);    //與mysql不同的是,結果集返回的是對象類型,而mysql是資源類型
	echo "<br /><br />";
	print_r($row=$result->fetch());       //可以在函數內加參數,默認混合數組,(1或2)關聯數組,3索引數組
	echo "<br />共有".$result->rowCount()."行<br /><br />";

	$row_dim2=$result->fetchAll();   //讀取所有記錄到二維數組$row_dim2中
	foreach ($row_dim2 as $row) {    //將每條記錄放到數組$row中
		print_r($row);            //依次打印每條記錄
		echo "<br />";
	}

?>

2. 使用prepare()方法執行預處理語句

2.1 插入

<?php
	$dsn="mysql:host=localhost;dbname=guestbook";   
	$db=new PDO($dsn,'root','123',array(PDO::ATTR_PERSISTENT=>true));   //長連接
	$db->query('set names utf-8');  

	$sql="insert into lyb(title,content,author) values(?,?,?)";    
	//用?作佔位符,等價於 $sql="insert into lyb(title,content,author) values(:title,:content,:author);

	$stmt=$db->prepare($sql);           //返回一個查詢對象,準備執行查詢

	$title='PDO預處理'; $content='這是插入的記錄'; $author='bingo';
	$stmt->bindParam(1,$title);       //綁定參數,等價於 $stmt->bindParam(':title',$title);
	$stmt->bindParam(2,$content);
	$stmt->bindParam(3,$author);
	$stmt->execute();        //【執行語句】,將插入一條記錄

	#可以用該句話代替上面五句話  $stmt->execute(array('PDO預處理','這是插入的記錄','bingo'));

	echo "新插入記錄的ID號是:".$db->lastInsertId();

	# 如果要再插入記錄,只要添加下面的代碼即可
	$title='第二條'; $content='這是另一條插入的記錄'; $author='ognib';
	$stmt->execute();
	echo "<br />新插入記錄的ID號是:".$db->lastInsertId();
?>

2.2 查詢

<?php
	$dsn="mysql:host=localhost;dbname=guestbook";
	$db=new PDO($dsn,'root','123');     //連接數據庫
	$db->query('set names utf-8');  

	$sql='select * from lyb where title like ?';     //【注意】不能寫成%?%的形式,因爲佔位符必須用於整個值的位置
	$stmt=$db->prepare($sql);        //創建一個查詢對象,準備執行語句

	$title='哈';
	$stmt->execute(array("%$title%"));     //執行查詢的時候同時綁定數組,execute()中的參數是一個數組
	$row=$stmt->fetch(1);   //以關聯數組的形式將結果集中的[第一條]記錄取出
	echo "<br /><br />";
	var_dump($row);        //輸出數組
	echo "<br /><br />".$row['title'];
?>





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章