0
0

PDOでデータベースにアクセス

Posted at

PHPでDBに簡単に接続できるPDOというものを使ってデータベースにアクセスします。
MANPを起動させphpMyAdminにアクセスしてDBを作ります。

データベース用アカウントの作成

まず初めにデーターベースにアクセス可能なアカウントを作成していきます。
phpMyAdminのトップページにアクセス→上のタブのDataBaseをクリック→アカウントを追加したいデーターベース欄の権限をチェックする→画面下の方にあるユーザーアカウントを作成するをクリックします。

ユーザー名を入力→ホスト名をローカル→パスワードを入力→もう一度入力→権限の付与の選択→実行で完了です

アカウントを使いDBを扱っていく

ここからコードを書いていきます。やっていきます。

$dns = 'mysql:host=localhost;dbname=study;charaset=utf8';
$name = 'user';
$pass = 'password';

try{
    //データベース、ユーザー名、パスワードから接続をする
    $dbh = new PDO($dns,$user,$pass,[
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    ]);
    echo "接続成功";
}catch(PDOException $e){
        echo '接続失敗' . $e->getMessage();
        exit();
}

インスタンスの作成時にオプション(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)をつけエラーが発生した場合にはエラーメッセージを受け取れます。

データベースから取得してみる

別ページからpostされた値のページを取得していきます。

$id = $_POST["id"];

$sql = "SELECT * FROM userDB WHERE id = :id";
$stmt = $dbh->prepare($sql); //sql文の準備
$stmt->bindvalue(":id", (int)$id, PDO::PARAM_INT); //:idにidの値をINT形式で代入
$stmt->execute(); //実行
$result = $stmt->fetch(PDO::FETCH_ASSOC);

手順としては上記のものです。
bindvalueは一度に複数の置き換えは不可能
fetchAllで複数帰ってきます、PDO::FETCH_ASSOCにしているのは配列で複数返ってきた場合データが扱いやすいからです。

終わりに

今回はデータベースに接続して値の取得を行いましたが他にもできます。これからも勉強を続けていこうと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0