PHPでデータベースに接続する

おぞねです。

LoLTeamMakerのブラウザ版を鋭意作成中ですが、Webサービスの作成は初なので、わからないことだらけです。
現在ログインシステムを作成していますが、PHPでデータベース(MariaDB(MySQL))に接続する方法が難しかったので備忘録です。

全体のコード

try{
  $dbh = new PDO(
    'mysql:host=localhost;dbname=loltm;charset=utf8mb4',
    'XXXXXXX',
    'YYYYYYY',
   array(
      PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
      PDO::ATTR_EMULATE_PREPARES => false
    )
  );
  $prepare = $dbh->prepare('select userName, password from registration where userName = ?;');
  $prepare->bindvalue(1,$id,PDO::PARAM_STR);
  $prepare->execute();
  $result = $prepare->fetch();

  echo "<p>DB読み込み成功</p>";
} catch (PDOException $e) {
  $error = $e->getMessage();
  echo "<p>DB読み込み失敗</p>"."$error";
}

$idはログイン時に指定されるユーザ名が格納されています。

PDO

 $dbh = new PDO(
    'mysql:host=localhost;dbname=loltm;charset=utf8mb4',
    'XXXXXXX',
    'YYYYYYY',
   array(
      PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
      PDO::ATTR_EMULATE_PREPARES => false
    )
  );

(PHP Data Objects)を作成。
PDO(データベース情報,データベースユーザ名,パスワード,オプション); と指定する。
オプションについては割愛。上記指定をすると例外をスローし、静的プレースホルダを使用する。

SQL実行準備

 $prepare = $dbh->prepare('select userName, password from registration where userName = ?;');
 $prepare->bindvalue(1,$id,PDO::PARAM_STR);

次にSQL実行準備をするが、動的に変更したい部分をプレースホルダにする(今回の場合は”?”の箇所)。
ログイン時に入力される名前を用いてパスワードを参照するため、userName = ? と指定しています。

その後、bindvalueで、プレースホルダに$idを指定しています。
bindvalueで指定している”1″は、1つ目の?であることを意味します。
⇒prepare()で、複数プレースホルダを指定している場合に、1,2,3…でどのプレースホルダか指定する。
PARAM_STRは文字列であることを意味します。

実行

  $prepare->execute();
  $result = $prepare->fetch();

execute()で準備したSQLを実行します。

fetch()で実行結果を$resultに格納しています。
select userName, passwordを指定しているため、$result[0]にselect userName結果が、 $result[1]にselect passwordの結果が格納されます。

以上です。理解が浅いので間違いがあればご指摘お願いいたします。
それではまた。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です