データベース抽象層PDO

4042 ワード

データベース抽象層PDO(PHP Date Object略)
一貫した関数によってクエリーとデータの取得を行い、データベース操作を簡素化し、異なるデータベース間の差異を遮断し、移植を容易にする.
PDOインストール
phpプロファイルで拡張モジュールがアクティブになっていることを確認し、phpを編集します.iniファイル
extension=php_pdo.dll//すべてのPDOドライバ共有の拡張は、
//データを使ってどれをアクティブにするか
extention=php_pdo_mysql.dll//MySQL
extention=php_pdo_odbc.dll//ODBC
extention=php_pdo_mssql.dll//SQL Server
extention=php_pdo_oci.dll//Oracle
Webサーバを再起動しphpinfo()関数を使用して表示
PDOオブジェクトの作成
方法1:
パラメータをコンストラクション関数に埋め込む
<?php
	$dsn ='mysql:host=localhost;dbname=bookstore';// :          
	$user = 'root';
	$password = '1234567';

	try {
		$dbh = new PDO($dsn,$user,$password);
		echo '    !'.'<br>';
	} catch (PDOException $e) {
		echo '       :'.$e->getMessage().'<br>';
		exit();
	}

?>

方法2:
パラメータをファイルに保存
方法3:
phpを参照します.iniファイル
永続的な接続を使用すると、PHPはMySQLサーバのプロセスによって作成された新しい接続と古い接続を統合して1つの接続に共有します.
PDOオブジェクトの使用
getAttribute()/データベース接続オブジェクトのプロパティの取得
setAttribute()/データベース接続オブジェクトのプロパティを設定する
PDOを使用したSQL文の実行
1.PDOの使用::exec()メソッド
実行可能insert、update、deleteなど
<?php
	$dsn ='mysql:host=localhost;dbname=bookstore';// :          
	$user = 'root';
	$password = '1234567';

	try {
		$dbh = new PDO($dsn,$user,$password);
		echo '    !'.'<br>';
	} catch (PDOException $e) {
		echo '       :'.$e->getMessage().'<br>';
		exit();
	}
<span style="white-space:pre">	</span>$insertdata = "insert into books (bookName,publisher,price) values ('     ','       ','28')";
	$affected = $dbh->exec($insertdata);
	if ($affected) {
		echo '   book       :'.$affected.'<br>';
	}else{
		print_r($dbh->errorInfo());
	}
?>
2.PDOの使用:query()メソッド
オブジェクトのrowCount()メソッドが影響する行数を使用するPDOstatementオブジェクトを返します.
<?php
//      PDO (PHP Data Object)
	$dsn ='mysql:host=localhost;dbname=bookstore';
	$user = 'root';
	$password = '1234567';

	try {
		$dbh = new PDO($dsn,$user,$password);
		echo '    !'.'<br>';
	} catch (PDOException $e) {
		echo '       :'.$e->getMessage().'<br>';
		exit();
	}
<span style="white-space:pre">	</span>//  PDO::query()  
	$selectdata = "select bookName,publisher,price from books where publisher='       '";
	try{
		$pdostatement = $dbh->query($selectdata);
		echo '        '.$pdostatement->rowCount().'   :<br>';
		foreach ($pdostatement as $row) {
			echo $row['bookName']."\t";
			echo $row['publisher']."\t";
			echo $row['price']."\t";
			echo '<br>';
		} 
	}catch (PDOException $e){
			echo $e.getMessage();
			print_r($dbh->errorInfo());
	}
?>
3.PDO前処理文
PDOには、名前付きパラメータと疑問符パラメータの2つのプレースホルダの構文があります.
名前付きパラメータ:
$query = "insert into books (bookName,publisher,price) values (:bookname,:bookpublisher,:bookprice)";
$stmt = $dbh->prepare($query);
疑問符パラメータ:
$query = "insert into books (bookName,publisher,price) values (?,?,?)";
$stmt = $dbh->prepare($query);
バインドパラメータbindParam()
準備した文のプレースホルダにパラメータをバインドする
$bookName = "div+css";
$publisher=「機械電子出版社」;
$price = 66;
//バインドパラメータ
echo'バインドパラメータ'.'
';
$stmt->bindParam(':bookName',$bookName,PDO::PARAM_STR);
$stmt->bindParam(':bookpublisher',$publisher,PDO::PARAM_STR);
$stmt->bindParam(':bookprice
',$price
,PDO::PARAM_STR);
準備されたクエリーの実行
$stmt->execute();
4.データの取得
fetch()現在のローレコードの取得
fetchAll()結果セット全体を取得
setFetchMode()メソッドは、fetch()メソッドとfetchAll()メソッドが結果セットをどのように返すかを設定します.
bindColumn()メソッドは、1つのカラムと指定された変数名をバインドします.