LoginSignup
9
9

More than 5 years have passed since last update.

PHPでデータベースに接続してみた。

Last updated at Posted at 2016-10-29

 自己紹介

皆さん初めまして。某学校で、ITの知識を勉強中の初心者プログラマーのわたのんです。将来はサーバサイドのエンジニアになるため、今精進しています。
以後お見知りおきを。得意言語はPHPです。今回はPHPでのデータベースの接続のやり方について書かせていただきます。

データベース接続方法

データベースの接続には今回PDO(Php Data Object)というクラスを使います。
ほかにも関数を使って接続する方法もあるがPHPのバージョンが5.5以上になってくるとつかえないので、データベース接続時にはPDOを使うことをおすすめします。
書式は以下のとおり
$変数名=new PDO("DBの種類:dbname=接続したいDB名;host=ホスト名;charset=文字のエンコード;","ID","pass")

db.php
$dsn="mysql:dbname=sample_db;host=sample_host;charset=UTF-8";
$user="watanonn";
$pass="******";

try{
   $pdo=new PDO($dsn,$user,$pass);
}catch(PDOException $e){
   echo "接続失敗";
   die();
}

簡単に説明しちゃうと引数をすべて変数で管理し、try、catchで囲んだだけ。あとは書式通り。
チョー簡単!!因みにdie()関数は強制終了したいときに使います。

データベースの値を取り出す(SELECT)

1.query()メソッドを使う方法
2.prepare()、execute()メソッドを使う方法

メソッド 意味
query() prepareを使わずに、SQL文を実行
prepare() 値部分にパラメータをつけてSQL文実行待ち
execute() 準備したprepareに入っているSQL文を実行

1.query()メソッドを使う方法

db.php
$sql="SELECT 列名 FROM テーブル名";
$stmt=$pdo->query($sql);
while($data=$stmt->fetch()){
  echo "$data["取り出したい列の名前"]";
}

2.prepare()、execute()メソッドを使う方法

db.php
$sql="SELECT 列名 FROM テーブル名 WHERE :id AND :pass";
$stmt=$pdo->prepare($sql);
$ret=$stmt->execute(array(
                    ":id"=>入れたい値,
                    ":pass"=>入れたい値
                   )); 
while($data=$stmt->fetch()){
  echo "$data["取り出したい列の名前"]";
}

データベースの値を挿入(INSERT)

db.php
$sql="INSERT INTO テーブル名(列名,・・・) VALUES(:id,:pass) ";
$stmt=$pdo->prepare($sql);
$ret=$stmt->execute(array(
                    ":id"=>入れたい値,
                    ":pass"=>入れたい値
                   )); 
if($ret){
  echo "INSERT失敗";
  die();
}

※UPDATE文やDELETE文も同じことなので、省略。

最後に

いかがでしたか?PHPでデータベースに接続する方法は:smiley:
これからも至らない点は多々あるかとは思いますがこれからもPHPについて投稿したいと思います。
間違っている点や改善点などありましたら連絡ください:bowtie:

追記(2017-05-12)

PDOの属性設定

設定方法

pdoのオブジェクト変数->setAttribute(属性の内容,属性の値);

PDO::ATTR_ERRMODE
SQL実行でエラーが起こった際にどう処理するかを指定します.デフォルトは PDO::ERRMODE_SILENT です.

・PDO::ERRMODE_EXCEPTION を設定すると例外をスローしてくれる.これを選択しておくのが一番無難.

・PDO::ERRMODE_WARNING はSQLで発生したエラーをPHPのWarningとして報告する.

PDO::ERRMODE_SILENT は何も報告しない.
以後おすすめの例

dp.php
$pdo->setAttribute(PDO::ATTR_ERRORMODE,PDO::ERRORMODE_EXCEPTION);

おまけ

dp.php
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES,false);

※プリぺアドステートメントを使うときは入れておこう(笑)
※いずれも、PDOクラスをインスタンス後に記述する

feachの引数

・PDO::FETCH_BOTH
カラム番号とカラム名の両方をキーとする連想配列で取得する.
・PDO::FETCH_NUM
カラム番号をキーとする配列で取得する.
・PDO::FETCH_ASSOC
カラム名をキーとする連想配列で取得する.これが一番ポピュラーな設定.
・PDO::FETCH_OBJ
カラム名をプロパティとする基本オブジェクトで取得する.

     
   
     

9
9
2

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
9
9