[英]PHP multiple connections to MySQL - best practice
我對PHP Mysql連接的最佳做法有疑問。 現在,我有一個具有數千行的數據庫。 該行包含例如產品說明。 但是在行中,我沒有名字,但名稱為ID,我沒有顏色,但顏色為ID等。我這樣做是因為當我必須使用名字或顏色時,我只能在表COLORS中更改名稱和顏色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獲取數據到數組,然后在獲取查詢時在函數中處理它們?
為單個查詢建立連接是很糟糕的做法,因此要對同一個數據庫建立多個連接。 通常,您在腳本的開頭與一個數據庫建立單個連接,並在結尾處將其關閉。 您可以始終使用$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();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.