//まずmysqlデータベースに接続します
$dbh = 新しい PDO('mysql:host=localhost;dbname=test', $user, $pass);
//mssql に接続したい場合:
//mssql:host=localhost;dbname=testdb
//pgsql に接続します:
//pgsql:host=localhost port=5432 dbname=testdb user=bruce パスワード=mypass
//odbc(DSN)に接続します
//odbc:testdb
//偶数アクセス:
//odbc:Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\db.mdb;Uid=Admin
//oracle、sqlite、db2などもあります...
//クエリを実行します
foreach ($dbh->query('SELECT * from FOO') as $row) {
print_r($row); //この結果は mysql_fetch_array と似ています。 PDOStatement::setFetchMode を調整できます。
}
//また:
$sth = $dbh->prepare("フルーツから名前、色を選択");
$sth->execute();
// レコードセット全体を配列に読み込みます。
$result = $sth->fetchAll();
print_r($result);
//出力:
配列
(
[0] => 配列
(
[名前] => 梨
[0] => 梨
[カラー] => グリーン
[1] => 緑色
)
[1] => 配列
(
[名前] => スイカ
[0] => スイカ
[カラー] => ピンク
[1] => ピンク
)
)
//データの挿入/削除/更新:
$count = $dbh->exec("DELETE FROM FROM WHERE color = 'red'");
//$count は削除されたアイテムの数です。 mysql_affected_rows と同等
//PDOStatement::rowCount も使用できます
。 //どのデータベースを使用したか忘れました。 。 。 。
if ($db->getAttribute(PDO::ATTR_DRIVER_NAME) == 'mysql') {
echo "mysql で実行しています。ここで mysql 固有の処理を実行していますn";
}
//Mysql_escape_string はデータを挿入するときに使用されていましたが、今はどうですか?
print "引用符で囲まれていない文字列: $stringn";
print "引用符で囲まれた文字列: " . $conn->quote($string) ";
//得る:
引用符で囲まれていない文字列: いいですね
引用符で囲まれた文字列: 'Nice'
//ほら、引用符も自動的に追加されるようになりました。 。 。 。
//一部の ' => ''、一部の ' => '、 => \ など、データベースが異なると結果が異なることに注意してください。
//心配する必要はありません。完全に自動です。
//最後に閉じなければなりません
$conn = null;
//しかし!次の方法で接続を維持できます。
$dbh = 新しい PDO('odbc:SAMPLE', 'db2inst1', 'ibmdb2',
array(PDO_ATTR_PERSISTENT => true));
//とても簡単ですね。
添付ファイル: 非常に単純な特殊な呼び出しメソッド:
$stmt = $dbh->prepare("SELECT * FROM REGISTRY where name = ?");
if ($stmt->execute(array($_GET['name']))) { //何を恐れているのですか?自動お見積り!
while ($row = $stmt->fetch()) {
print_r($row);
}
}
また:
$stmt->bindParam(1, $id);
$stmt->bindParam(2, $_FILES['file']['type']);
$stmt->bindParam(3, $fp, PDO::PARAM_LOB);
このような優れた関数はどこにありますか? php5.1 以降は拡張機能にあり、php5 は pecl にあり、php4 については考えないでください。