全体の構成等
PHPとMySQLの勉強がてらに、備忘録として記事に残します。
ユーザ情報を管理するテーブルへのアクセス方法です。
・言語:PHP
・データベース:MySQL
・構成:
├─base
│ ├─db
│ │ PDOConnect.php
│ │
│ ├─entity
│ │ User.php
│ │
│ └─sql
│ UserSql.php
DB接続クラス
PDOConnect.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
<?php /** * DB接続クラス(継承元として定義) * */ class PDOConection { // データベース接続情報 private $host = 'localhost'; private $dbname = 'データベース名'; private $dbuser = 'ユーザ名'; private $dbpass = 'パスワード'; private $dbh = null; /** * コンストラクタ */ function __construct(){ $this->dbh = new PDO("mysql:host={$this->host};dbname={$this->dbname};charset=utf8mb4", $this->dbuser, $this->dbpass, array( PDO::ATTR_EMULATE_PREPARES => false )); $this->dbh->query('SET NAMES utf8'); } /** * PDOの取得 * @return PDO */ public function getDbh() { return $this->dbh; } } ?> |
ユーザ情報をまとめるエンティティ
User.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
<?php /** * ユーザ情報 */ class User { public $userNo; public $userName; public $userKana; public $gender; public $birthday; public $status; public $memo; public $insertUserNo; public $insertTime; public $updateUserNo; public $updateTime; /** * コンストラクタ * @param $userNo * @param $userName * @param $userKana * @param $gender * @param $birthday * @param $memo * @param $status * @param $insertUserNo * @param $insertTime * @param $updateUserNo * @param $updateTime */ public function __construct($userNo, $userName, $userKana, $gender, $birthday, $memo, $status, $insertUserNo, $insertTime, $updateUserNo, $updateTime) { $this->userNo = $userNo; $this->userName = $this->getVal($userName); $this->userKana = $this->getVal($userKana); $this->gender = $this->getVal($gender); $this->birthday = $this->getVal($birthday); $this->status = $this->getVal($status); $this->memo = $this->getVal($memo); $this->insertUserNo = $this->getVal($insertUserNo); $this->insertTime = $this->getVal($insertTime); $this->updateUserNo = $this->getVal($updateUserNo); $this->updateTime = $this->getVal($updateTime); } /** * 置換など行うように * @param $item * @return */ private function getVal($item) { return $item; } } ?> |
DB接続クラスを継承してユーザ情報へアクセス
UserSql.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 |
<?php require_once dirname(__FILE__) . '/../db/PDOConnect.php'; /** * ユーザ情報SQL * */ class UserSql extends PDOConection { /** * 現在日付の取得 * @return mixed */ public function getNow() { $sql = "SELECT NOW() AS NOW_DATE"; $dbh = $this->getDbh(); $prepare = $dbh->prepare($sql); $prepare->execute(); if($row = $prepare -> fetch()){ return $row['NOW_DATE']; } } /** * ユーザNoを指定して取得 * @param $userNo * @return array */ public function getUserByUserNo($userNo) { $sql = "SELECT * FROM m_user WHERE user_no = :userNo ORDER BY user_no DESC"; $dbh = $this->getDbh(); $prepare = $dbh->prepare($sql); $prepare->bindValue(':userNo', $userNo, PDO::PARAM_INT); $prepare->execute(); return $prepare->fetchAll(PDO::FETCH_ASSOC); } /** * ユーザ情報をリストで取得 * @return array */ public function getUserList() { $sql = "SELECT * FROM m_user ORDER BY user_no DESC"; $dbh = $this->getDbh(); $prepare = $dbh->prepare($sql); $prepare->execute(); return $prepare->fetchAll(PDO::FETCH_ASSOC); } /** * ユーザ情報を登録 * @param $user * @return array */ public function insertUser($user) { try{ $sql = "INSERT INTO m_user ( user_name ,user_kana ,gender ,birthday ,status ,memo ,del_flg ,insert_user_no ,insert_time ,update_user_no ,update_time ) VALUES ( :userName ,:userKana ,:gender ,:birthday ,:status ,:memo ,:delFlg ,:insertUserNo ,:insertTime ,:updateUserNo ,:updateTime ) "; $dbh = $this->getDbh(); $prepare = $dbh->prepare($sql); $prepare->bindValue(':userName', $user->userName, PDO::PARAM_STR); $prepare->bindValue(':userKana', $user->userKana, PDO::PARAM_STR); $prepare->bindValue(':gender', $user->gender, PDO::PARAM_INT); $prepare->bindValue(':birthday', $user->birthday, PDO::PARAM_STR); $prepare->bindValue(':status', $user->status, PDO::PARAM_STR); $prepare->bindValue(':memo', $user->status, PDO::PARAM_STR); $prepare->bindValue(':delFlg', '0', PDO::PARAM_STR); $prepare->bindValue(':insertUserNo', $user->insertUserNo, PDO::PARAM_INT); $prepare->bindValue(':insertTime', $user->insertTime, PDO::PARAM_STR); $prepare->bindValue(':updateUserNo', $user->updateUserNo, PDO::PARAM_INT); $prepare->bindValue(':updateTime', $user->updateTime, PDO::PARAM_STR); $prepare->execute(); return $prepare->fetchAll(PDO::FETCH_ASSOC); } catch(PDOException $e) { print('Error:'.$e->getMessage()); } } /** * ユーザ情報を更新 * @param $user * @return array */ public function updateUser($user) { try{ $sql = "UPDATE m_user SET user_name = :userName ,user_kana = :userKana ,gender = :gender ,birthday = :birthday ,status = :status ,memo = :memo ,update_user_no = :updateUserNo ,update_time = :updateTime WHERE user_no = :userNo"; $dbh = $this->getDbh(); $prepare = $dbh->prepare($sql); $prepare->bindValue(':userNo', $user->userNo, PDO::PARAM_INT); $prepare->bindValue(':userName', $user->userName, PDO::PARAM_STR); $prepare->bindValue(':userKana', $user->userKana, PDO::PARAM_STR); $prepare->bindValue(':gender', $user->gender, PDO::PARAM_INT); $prepare->bindValue(':birthday', $user->birthday, PDO::PARAM_STR); $prepare->bindValue(':status', $user->status, PDO::PARAM_STR); $prepare->bindValue(':memo', $user->memo, PDO::PARAM_STR); $prepare->bindValue(':updateUserNo', $user->updateUserNo, PDO::PARAM_INT); $prepare->bindValue(':updateTime', $user->updateTime, PDO::PARAM_STR); $prepare->execute(); return $prepare->fetchAll(PDO::FETCH_ASSOC); } catch(PDOException $e) { print('Error:'.$e->getMessage()); } } } ?> |
最後に
上記ソースコードでPHP、MySQLへの基本的なアクセスは可能です
コメント