質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

3回答

2079閲覧

phpでMySql接続で推奨の接続方法

TaruOrder

総合スコア76

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2016/02/14 11:01

phpをつかってMySqlに接続がしたいのですが推奨の方法はなになんでしょうか...
いままではMySqliというのでオブジェクト指向という方法を使ってきました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

公式のリファレンスでは、mysqliPDO方式のどちらかを使うことを推奨されています。
どっちがいいの?っていうことなら、個人的には、PDO方式をお勧めします。
何故なら、万一ほかのデータベースに接続・置き換えるとなった場合でも書き換えが容易であるという点があげられます。
使うデータベースはMySQLだけですよという場合でも、結果が取り出しやすく、名前付きプレースホルダが使えるため、クエリが長くなり複数のプレースホルダーを使っていたとしてもクエリが見やすくなる効果があります。

下のソースコードは、PDOを利用してMySQLのデータベースに接続した後、SELECT文を実行した例です。

php

1$pdo =New PDO('mysql:host=[データベースのIPアドレスまたはホスト名], 2dbname=[データベース名];charset=[文字コード]','UseName','Password', 3array(PDO::ATTR_EMULATE_PREPARES => false)); 4 } catch (PDOException $e) { 5 echo('データベース接続失敗。'.$e->getMessage()); 6 return; 7 } 8 $stmt = $pdo -> prepare("SELECT * FROM テーブル名 WHERE ID = :id ORDER BY no ASC"); 9 $stmt -> bindValue(":id","0"); 10 $stmt -> execute(); 11 $listmembers=$stmt -> fetchALL(PDO::FETCH_ASSOC); 12 return $listmembers;

コンストラクタ内の連想配列は、接続時のオプションを連想配列で渡しています。
今回の場合は、プリペアードステートメントのエミュレーションを使わないという意味です。
接続後のソースコードを簡単に説明すると($stmt = $pdo -> prepareから始まる所のことです)

  • prepareで不完全なクエリ文をサーバーに送信します。(この時点では、まだ実行されません)
  • bindValueで:idの部分に置き換える値を入力します(この**":id"**の事を名前付きプレースホルダと呼びます)
  • execute()で名前付きプレースホルダが実際の数値に置き換えられ、実行されます。
  • 最後に、帰ってきた結果をすべて取得しています。(fetchALL()の引数を指定して、形式を選んで結果を取り出すことが可能です。今回の場合は連想配列で結果が取り出せます)

参考URL(PDOで接続、SELECT、プリペアドステートメントとは(PHPでMySQLに接続))
http://qiita.com/tabo_purify/items/d1166236f3b03c7be60d

投稿2016/02/14 12:56

winvis

総合スコア24

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

現状 Mysqli を使っているとのことですので、無理に PDO に乗り換える必要はないかと思います。

Mysqli は PDO に比べ動作が早く、マルチクエリが使えたりエラーを例外としてスローできるなど、PDO ではできないこともできます。

PDO も汎用性が高く、MySQL 以外に乗り換えることがあればよいのですが、DB 自体を MySQL 以外にすぐに乗り換える等の理由が無いのであれば、そのまま Mysqli を使い続けたほうが良いかと思います。

投稿2016/03/11 14:54

編集2016/03/11 14:56
pull

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

投稿2016/02/14 11:25

TakahiroSakoda

総合スコア16

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問