[讨论] 大家对于数据库的连结方式?

楼主: 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