ここから本文です

PHPについての質問です。 下記の内容をMDB2からPDOに変更したいのですが、どうし...

sel********さん

2013/9/1311:49:49

PHPについての質問です。
下記の内容をMDB2からPDOに変更したいのですが、どうしたらいいですか?
PHP初心者なもので、自己解決ができません。
どなたかわかる方お願いします。

<form method="post" action="dbtest.php">
<table>
<tr><td>都道府県</td><td><input type="text" name="pref" value="<?php print(htmlspecialchars($_POST['pref'])); ?>" /></td></tr>
<tr><td>性別</td><td><input type="text" name="sex" value="<?php print(htmlspecialchars($_POST['sex'])); ?>"/></td></tr>
</table>
<input type="submit" value="送信" />
</form>
<?php
// MDB2クラスの組み込み
$pear_path = 'c:/xampp/php/pear/';
set_include_path(get_include_path() . PATH_SEPARATOR . $pear_path);
require_once('MDB2.php');

// DSNの設定
$dsn = array(
'phptype' => 'mysql',
'username' => 'root',
'password' => '',
'hostspec' => 'localhost',
'database' => 'testdb',
);

// オプションの設定
$options = array(
'portability' => MDB2_PORTABILITY_ALL,
);

// 接続
$mdb2 =& MDB2::connect($dsn, $options);
if (PEAR::isError($mdb2)) {
exit('データベースへの接続に失敗しました');
}

// 初期化
$sql = 'set names utf8';
$res =& $mdb2->query($sql);
$mdb2->setFetchMode(MDB2_FETCHMODE_ASSOC);

// プリペアド・ステートメントの準備
$sql = 'select * from address where pref = ? and sex = ?';
$type = array('text', 'text');
$sth = $mdb2->prepare($sql, $type);

// プリペアド・ステートメントの実行
$data = array($_POST['pref'], $_POST['sex']);
$res = $sth->execute($data);
if (PEAR::isError($res)) {
exit('selectに失敗しました');
}

// レコードの内容を表示
print("<table border=\"1\">\n");
print("<tr>");
print("<th>名前</th><th>性別</th><th>都道府県</th><th>住所</th><th>電話番号</th>");
print("</tr>");
while ($data = $res->fetchRow()) {
print("<tr>\n");
print("<td>" . $data['name'] . "</td>");
print("<td>" . $data['sex'] . "</td>");
print("<td>" . $data['pref'] . "</td>");
print("<td>" . $data['address'] . "</td>");
print("<td>" . $data['phone'] . "</td>");
print("</tr>\n");
}
print("</table>\n");

// 接続を切る
$mdb2->disconnect();
?>

補足できれば詳しく解説もふまえて教えていただくとありがたいです。
初心者なもので何卒よろしくお願いします。

閲覧数:
760
回答数:
2
お礼:
25枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

ryo********さん

編集あり2013/9/1414:11:12

PHPからデータベースに接続するときのまとめ
http://qiita.com/mpyw/items/b00b72c5c95aac573b71

上記を踏まえてのサンプル
http://codepad.org/76783buC
http://codepad.viper-7.com/8pHGDq

【追記】

MDB2を使ったことがある初心者さんってまた珍しいですね・・・
(だいたいmysql関数ばかりだと思ったんですが)

Qiitaの記事読んでいただければ分かっていただけると思います。
かなり詳しくポイントまとめています。
それでまだ分からないことがあれば、分からない点を具体的に質問お願いします。
Qiitaのコメント欄で質問頂いてもお答えします。

質問した人からのコメント

2013/9/17 16:48:42

降参 買った参考書がMDB2でしたので、最近使われているPDOに書き換えたかったのです。
参考サイトありがとうございます。
調べてコードを書き換えてみたいと思います。
皆さんありがとうございました。

ベストアンサー以外の回答

1〜1件/1件中

agu********さん

編集あり2013/9/1416:37:29

sell_my_soul_taka_57さん

ざっくりと

$dsn = 'mysql:host=localhost;dbname=testdb;charset=utf8';

try {
$pdo = new PDO($dsn, 'root', '');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$sql = 'select * from address where pref = ? and sex = ?';
$stmt = $pdo->prepare($sql);

$stmt->execute(array($_POST['pref'], $_POST['sex']));

(中略)

while ($data = $stmt->fetch(PDO::FETCH_BOTH) {
// $data から出力する処理
}

// 例外の捕捉
} catch (PDOException $e) { die('database error<br />' . $e->getMessage()); }




>できれば詳しく解説もふまえて教えていただくとありがたいです。

phpのマニュアルでもいいでしょう(PEARと違って本家のマニュアルに詳細があります)し、ryosuke_i_628さんがまとめられたサイトならマニュアルで間違いやすい部分も網羅されていると思います。

http://www.php.net/manual/ja/book.pdo.php

私もmdb2から書き直す(mdb2を使っている)というので、初心者とは想像出来ませんでした(少なくとも「簡単なソースを提示すれば、マニュアルで調べて自分でやってみる」レベルを想定してしまいました)。

あわせて知りたい

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる