2013年3月3日日曜日

php の pdo 経由で mysql に接続する


php5.4 の pdo 経由で mysql5.5 に接続する

環境


$ php -v
PHP 5.4.6-1ubuntu1.1 (cli) (built: Nov 15 2012 01:18:34)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies

$ mysql --version
mysql Ver 14.14 Distrib 5.5.29, for debian-linux-gnu (x86_64) using readline 6.2



こんなデータベースがあるとする
mysql> select * from tb1;
+----------+--------------------------------+------+
| id       | name                           | age  |
+----------+--------------------------------+------+
| php546   | dummy_101                      |   21 |
+----------+--------------------------------+------+

read.php
<?php

/* */
print '<!DOCTYPE html><html lang="ja">'."\n";
print '<head><meta charset="UTF-8"><title>mysql php</title></head>'."\n";
print '<body>'."\n";
/* */

/* MySQL5.1over and PDO */
/* */

$DATABASE_SERVER = "mysql:host=localhost; dbname=db1; port=3306; charset=utf8";
$DATABASE_USER = "db1usr";
$DATABASE_PWD = "1234";

try{
 /* */
 $pdo = new PDO($DATABASE_SERVER, $DATABASE_USER, $DATABASE_PWD);
}catch(PDOException $e){
 echo 'Connection failed: ' . $e->getMessage();
}

/* PDOオブジェクト自体に指定。レスポンスは常に連想配列形式で取得するようになる */
$pdo -> setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
 
/* */
$query = "SELECT * FROM tb1";

$stmt = $pdo->prepare($query);
$stmt->execute();

/* 表示 */
foreach ($stmt as $row) {
 print $row["id"]." ".$row["name"]." ".$row["age"]."<br>\n";
}

/* */
$pdo = null;

/* comment */
print '</body></html>'."\n";
/* comment */

?>

input.php
<?php

/* MySQL5.1over and PDO */
/* */

$DATABASE_SERVER = "mysql:host=localhost; dbname=db1; port=3306; charset=utf8";
$DATABASE_USER = "db1usr";
$DATABASE_PWD = "1234";

try{
 /* */
 $pdo = new PDO($DATABASE_SERVER, $DATABASE_USER, $DATABASE_PWD);
}catch(PDOException $e){
 echo 'Connection failed: ' . $e->getMessage();
}

/* PDOオブジェクト自体に指定。レスポンスは常に連想配列形式で取得するようになる */
$pdo -> setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);

/* */
$query = 'INSERT INTO tb1 VALUES("php547", "dummy_102", 22)';

/* */
$stmt = $pdo->prepare($query);
$stmt->execute();

/* */
$pdo = null;

?>

0 コメント: