自己紹介
皆さん初めまして。某学校で、ITの知識を勉強中の初心者プログラマーのわたのんです。将来はサーバサイドのエンジニアになるため、今精進しています。
以後お見知りおきを。得意言語はPHPです。今回はPHPでのデータベースの接続のやり方について書かせていただきます。
データベース接続方法
データベースの接続には今回PDO(Php Data Object)というクラスを使います。
ほかにも関数を使って接続する方法もあるがPHPのバージョンが5.5以上になってくるとつかえないので、データベース接続時にはPDOを使うことをおすすめします。
書式は以下のとおり
$変数名=new PDO("DBの種類:dbname=接続したいDB名;host=ホスト名;charset=文字のエンコード;","ID","pass")
$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()メソッドを使う方法
$sql="SELECT 列名 FROM テーブル名";
$stmt=$pdo->query($sql);
while($data=$stmt->fetch()){
echo "$data["取り出したい列の名前"]";
}
2.prepare()、execute()メソッドを使う方法
$sql="SELECT 列名 FROM テーブル名 WHERE :id AND :pass";
$stmt=$pdo->prepare($sql);
$ret=$stmt->execute(array(
":id"=>入れたい値,
":pass"=>入れたい値
));
while($data=$stmt->fetch()){
echo "$data["取り出したい列の名前"]";
}
データベースの値を挿入(INSERT)
$sql="INSERT INTO テーブル名(列名,・・・) VALUES(:id,:pass) ";
$stmt=$pdo->prepare($sql);
$ret=$stmt->execute(array(
":id"=>入れたい値,
":pass"=>入れたい値
));
if($ret){
echo "INSERT失敗";
die();
}
※UPDATE文やDELETE文も同じことなので、省略。
最後に
いかがでしたか?PHPでデータベースに接続する方法は
これからも至らない点は多々あるかとは思いますがこれからもPHPについて投稿したいと思います。
間違っている点や改善点などありましたら連絡ください
追記(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 は何も報告しない.
以後おすすめの例
$pdo->setAttribute(PDO::ATTR_ERRORMODE,PDO::ERRORMODE_EXCEPTION);
おまけ
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES,false);
※プリぺアドステートメントを使うときは入れておこう(笑)
※いずれも、PDOクラスをインスタンス後に記述する
feachの引数
・PDO::FETCH_BOTH
カラム番号とカラム名の両方をキーとする連想配列で取得する.
・PDO::FETCH_NUM
カラム番号をキーとする配列で取得する.
・PDO::FETCH_ASSOC
カラム名をキーとする連想配列で取得する.これが一番ポピュラーな設定.
・PDO::FETCH_OBJ
カラム名をプロパティとする基本オブジェクトで取得する.