[討論] 大家對於資料庫的連結方式?

看板PHP作者 (小鋼)時間11年前 (2014/12/20 02:39), 編輯推噓0(004)
留言4則, 1人參與, 最新討論串1/1
其實會寫這篇文章算是拋磚引玉, 想要見識一下不同的人不同的寫法.希望大家能夠互相 分享一下 先講聯結方式吧,我自己寫PHP的時候是不會使用Mysql Procedure的, procedure通常都是 自己用來除錯或是查資料,不會放進PHP裡面 連結的時候我都會寫一個class是控制,不管是extend mysql, mysqli或是PDO, 以PDO來說(以下的程式碼指令可能是錯的,大家邏輯懂就好了) class myPDO { public $echo = false; public $debug = false; function __construct() { require_once "/configuration.php"; $user = self::mysqluser; $pass = self::mysqlpass; parent::__construct(.........); } } 通常我伺服器的專用參數都會統一放在一個檔案 寫這樣的好處是,在不同的伺服器之間並不需要修改class的內容,直接讀取伺服器參數就 好 $echo 算是用來偵錯,true的話則會echo 所有的query 接著以執行query來說,我通常一個table 會寫一個class 來負責 如果table偏向實體的東西,有可能還會因為單複數分成兩個class 舉table users 的例子來說 User , Users class User { private $user_id; private $user_name; private $user_age; funciton getUser(myPDO $pdo, $user_id) { $query = "SELECT user_name, user_age FROM users WHERE user_id=$user_id"; $pdo->query($query); ........... } } class Users { funciton getAllUser() { $query = "SELECT user_id, user_name, user_age FROM users"; $stmt = $pdo->query($query); $stmt->excute(); $Users = array(); while($row = $stmt->fetch()) { $user = new User($row); $Users[] = $user; } $return $Users; } } 當然也有一個class同時負責多個table的,例如Address 可能負責table street, city, country 這樣一來大概可以涵蓋掉80%左右的query,剩下的就直接寫query 呼叫mysql 的class 這大概就是我PHP與MYSQL之間的寫法吧 不知道其他人是怎麼樣呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 162.246.55.234 ※ 文章網址: http://www.ptt.cc/bbs/PHP/M.1419014363.A.892.html

12/20 03:18, , 1F
同個 server 上不同 site 我還是會設定專用 mysql user
12/20 03:18, 1F

12/20 03:18, , 2F
去連,只給那個該 database 的權限。
12/20 03:18, 2F

12/20 03:19, , 3F
第二段就是 model 的概念,找一套 ORM 來用?
12/20 03:19, 3F

12/20 03:25, , 4F
↑「找一套 ORM 來研究看看為什麼人家這樣寫」
12/20 03:25, 4F
文章代碼(AID): #1Kb73RYI (PHP)
文章代碼(AID): #1Kb73RYI (PHP)