我对PHP Mysql连接的最佳实践有疑问。 现在我有一个包含数千行的数据库。该行包含例如产品的描述。但在行中我没有名称,但ID没有名称,我没有颜色,但颜色的ID等。我正在这样做因为我必须改变名称或颜色 - 然后我只是更改表中的名称颜色和颜色ID保持不变。这样可以吗?
我问,因为有时我遇到与mysqli有多个连接的问题。下面我展示了我的工作方式:
// connection
function getConnected($host,$user,$pass,$db) {
$mysqli = new mysqli($host, $user, $pass, $db);
$mysqli->set_charset("utf8");
if($mysqli->connect_error)
die('Connect Error (' . mysqli_connect_errno() . ') '. mysqli_connect_error());
return $mysqli;
}
function msq(){
return getConnected('127.0.0.1','root','','database');
}
// functions
function getcolor($temp){
$db2=msq();
if($result = $db2->query("SELECT * FROM linkcolor WHERE idcolor='$temp' ")){
if($result->num_rows > 0) {
$res = $result->fetch_assoc();
return $res['name'];
}else{
return 'none';
}
}else{
return 'none';
}
}
function getname($temp){
$db2=msq();
if($result = $db2->query("SELECT * FROM linkname WHERE idname='$temp' ")){
if($result->num_rows > 0) {
$res = $result->fetch_assoc();
return $res['name'];
}else{
return 'none';
}
}else{
return 'none';
}
}
// query
if($quer = $db->query("SELECT * FROM products")){
if($quer->num_rows > 0) {
while($qr = $quer->fetch_assoc()){
echo getcolor($qr['idcolor']);
echo getname($qr['idname']);
}
}else{
}
}else{
}
这是一个好方法吗?或者更好的是从mysql获取数据到数组,然后在我提取查询时在函数中处理它们?
答案 0 :(得分:-1)
为单个查询建立连接是一个糟糕的实践,因此多个连接到同一个数据库。通常,您在脚本开头处与一个数据库建立单个连接,并在结束时将其关闭。您始终可以使用$GLOBALS
访问您创建的mysqli链接或为此创建静态类:
static class DB {
static protected $link = null;
static public function getLink() {
if (self::$link === null) {
self::$link = msq();
}
return self::$link;
}
}
然后您可以使用
访问您的连接$db2 = DB::getLink();