XAMPPでMySQLとPHPで簡単なデータベースアクセスを作ろうとしています。

検索文字を指定するとデータベースから検索し、該当を表示する
index.htmlからPHPを呼び出し、PDOを使用する簡単なプログラムを教えてください。その際、簡単な説明も頂けると助かります。
宜しくお願いします。

回答の条件
  • 1人50回まで
  • 登録:
  • 終了:2017/10/10 10:59:56
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:ymlab No.1

回答回数508ベストアンサー獲得回数34

ポイント200pt

http://www.flatflag.nir87.com/pdo_construct-912
http://www.flatflag.nir87.com/select-932
あたりが易しく解説をしてくれていると感じます。

上記サイトから必要な内容をコピペすると、以下のようになるかと。
ただし、前提として、データベースが作られているものとします。
データベースそのものも、PHPからcreateできるのですが、ややこしければ、
MySQL WorkBenchが有名です。
https://celtislab.net/archives/20130828/mysql-workbench-%E3%81%A7%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E3%81%AB%E6%8E%A5%E7%B6%9A%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B/
PHPMyAdmin も有名ですね。私も最初はPHPMyAdminを使っていました。
https://www.phpmyadmin.net/
ただこれは、Webベースで動いているので、面倒といえば面倒です。

そういうわけで、データベースを上記サイトのように作ります。
テーブル名はcitiesですね。

最初のコードは、
// データベースに接続するために必要なデータソースを変数に格納
// mysql:host=ホスト名;dbname=データベース名;charset=文字エンコード
$dsn = 'mysql:host=mysql000.db.sakura.ne.jp;dbname=example_php;charset=utf8';

// データベースのユーザー名
$user = 'user';

// データベースのパスワード
$password = 'pass';

// tryにPDOの処理を記述
try {

// PDOインスタンスを生成
$dbh = new PDO($dsn, $user, $password);

// エラー(例外)が発生した時の処理を記述
} catch (PDOException $e) {

// エラーメッセージを表示させる
echo 'データベースにアクセスできません!' . $e->getMessage();

// 強制終了
exit;

}

これですね。
ここで、$dsnのhostは、mysql・・・ではなく、適切な文字を入力してください。
id:hontakun_55 さんの環境が分からないのですが、自分のPC上で実行しているのであれば、
localhost になります。
dbnameは、cities ですね。
$userと$passwordは、データベースを作るときに設定しているものを入力します。

ここまで実行すると、データベースが存在してユーザー名とパスワードがあっていれば、強制終了することなく、プログラムが終了します。

この次は、
// SELECT文を変数に格納
$sql = "SELECT * FROM cities";

// SQLステートメントを実行し、結果を変数に格納
$stmt = $dbh->query($sql);

// foreach文で配列の中身を一行ずつ出力
foreach ($stmt as $row) {

// データベースのフィールド名で出力
echo $row['name'].':'.$row['population'].'人';

// 改行を入れる
echo '
';
}

これを、まずはtry { } の,
$dbh = new PDO($dsn, $user, $password);
の後に入れてください。

あとは、コメントの通りに実行されていきます。
頑張ってください!

※index.html からのPHP実行はapacheの設定によっては、うまく動かない可能性があります。
[PHPの実行に .htmlの拡張子を許可する必要がある。]
なので、index.htmlで、そもそもPHPが動かない場合は、index.phpで実行してみてください。

id:gontakun_55

詳しく説明まで記載頂きありがとうございました!
大変助かりました!

2017/10/10 10:59:29

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません