もう一度向き合うmysql(3)〜phpからmysqlを操作〜
またまた続き。
もう一度向き合うmysql(2) - 恥知らずのウェブエンジニア
- 作者: とみたまさひろ,鶴長鎮一,舘山聖司,遠藤俊裕,坂井恵,班石悦夫,松信嘉範
- 出版社/メーカー: 翔泳社
- 発売日: 2014/03/25
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
phpからmysqlを操作
└php5.5xから非推奨
- mysql improved extension(mysqli)
└上のmysqlを拡張したもの
- PDO mysql driver
└mysql以外のDBもも対応
今回はmysqliを使ったサンプルを。
サンプルプログラム
前提:localhostでmysql起動。hogeデータベースにtestテーブルあり。
PHPのmysqli_stmtでfetchAllっぽいものを実現する方法 - akiyan.com
こちらを参考に下記のように実装。
$this->server = 'localhost'; $this->user = '接続ユーザ'; $this->password = 'パスワード'; $this->database = '対象DB; $this->port = 'ポート番号'; // MySQL Connet $mysqli = new mysqli($this->server, $this->user, $this->password, $this->database, $this->port); if ($mysqli->connect_error) { die('Connect Error (' . $mysqli->connect_errno . ') ' . $mysqli->connect_error); } $tmp_id = 33; $query = "SELECT * FROM test WHERE id=?"; if ($stmt = $mysqli->prepare($query)) { // bind_paramの第一引数はバインドする値の型を文字列で列挙 // s は string, i は integer, d は double, b は blob $stmt->bind_param("i", $tmp_id); if (!$stmt->execute()) { $stmt->close(); $mysqli->close(); return; } $result = array(); $params = array(); $row = array(); $meta = $stmt->result_metadata(); while ($field = $meta->fetch_field()) { $params[] = &$row[$field->name]; } call_user_func_array(array($stmt, 'bind_result'), $params); while ($stmt->fetch()) { $tmp_res = (object) array(); foreach($row as $key => $val) { $tmp_res->$key = $val; } $result[] = $tmp_res; } var_dump($result); } $stmt->free_result(); $stmt->close(); $mysqli->close();
var_dump($result); array (size=1) 0 => object(stdClass)[17] public 'id' => int 33 public 'test' => int 35 public 'hoge' => int 33 public 'comment' => null
問題なさげ。
ようやく本も後半へ。
感謝致します。