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

作者: smallsteel (小鋼)   2014-12-20 02:39:21
其實會寫這篇文章算是拋磚引玉, 想要見識一下不同的人不同的寫法.希望大家能夠互相
分享一下
先講聯結方式吧,我自己寫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之間的寫法吧
不知道其他人是怎麼樣呢?
作者: chrisQQ (ChrisLiu)   2014-12-20 03:18:00
同個 server 上不同 site 我還是會設定專用 mysql user去連,只給那個該 database 的權限。第二段就是 model 的概念,找一套 ORM 來用?↑「找一套 ORM 來研究看看為什麼人家這樣寫」

Links booklink

Contact Us: admin [ a t ] ucptt.com