PDA

View Full Version : سوال: این درسته که اگه توی چند تابع، چند اتصال به دیتابیس ایجاد کنیم، mysql فقط اولین اتصال رو انجام می ده



idocsidocs
چهارشنبه 09 شهریور 1390, 02:35 صبح
من کدهام طوری هستن که توی مراحل مختلف توابع متفاوتی اینکلود می شن و توی هر کدوم یه اتصال به دیتابیس وجود داره. لطفا بگید که این روشی که من استفاده می کنم، یه روش مناسب هست یا نه؟ این مطلب درسته که اگه توی چند تابع، چند اتصال به دیتابیس ایجاد کنیم، mysql فقط اولین اتصال رو انجام می ده؟ توی منوال پی اچ پی چیزی در این مورد پیدا نکردم. برای مطمئن شدن لطفا لینک این مطلب رو برام بفرستید.

Mr.Moghadam
چهارشنبه 09 شهریور 1390, 14:41 عصر
شما فقط باید یکبار اتصال رو به دیتابیس برقرار کنید و این روش به نظر من روش درستی نیس.
اگر از MVC استفاده میکنید یک کلاس برای کار با دیتابیس بسازید و همون رو داخل کلاسهای دیگه اینکلود کنید یا ارث بری کنید.

بازم اگه امکان داره کدهات رو بزار بهتر میشه نظر داد


موفق باشی

idocsidocs
چهارشنبه 09 شهریور 1390, 15:00 عصر
شما فقط باید یکبار اتصال رو به دیتابیس برقرار کنید و این روش به نظر من روش درستی نیس.
اگر از MVC استفاده میکنید یک کلاس برای کار با دیتابیس بسازید و همون رو داخل کلاسهای دیگه اینکلود کنید یا ارث بری کنید.

بازم اگه امکان داره کدهات رو بزار بهتر میشه نظر داد


موفق باشی
من از mvc استفاده می کنم. مشکلم اینه که سسشن ها رو توی دیتابیس ذخیره می کنم، کلاس سسشن توی یه فایل جدا هست که باید اینکلود بشه و توابع مدل هم توی یه فایل جدا هستن و اونها هم باید اینکلود بشن !

وقتی کتابخانه مدل که کدهاش رو در ادامه نوشتم، اینکلود می کنم تابع setdb رو اجرا می کنم و یه اتصال به دیتابیس ایجاد می کنم تا بقیه کدها بدون مشکل به دیتابیس وصل بشن.

برای انجام کوئری ها در حالتهای مختلف توابعی ایجاد کردم که هر کدوم کار خاصی انجام می دن. همونطور که می بینید توی این توابع حتما باید setdb اجرا بشه تا توابع بتونن به لینک ایجاد اتصال دسترسی پیدا کنن. اگر توی یه اسکریپت چند بار این توابع استفاده بشن، هر بار باید تابع setdb اجرا بشه !




<?php
class model
{
private $db;
public function startdb()
{
$stri = new mysqli(HOST,USER,PASS,DATABASE);
$stri->set_charset('UTF8');
return $stri;
}
private function setdb()
{
$this->db=$this->startdb();
}
//تابع مربوط به اجراي کوئري ها بدون نياز به فيلتر
public function noinj($sql)
{
$this->db=$this->startdb();
$this->db->query($sql);
}
//سلکت کردن و شماردن رديفها
public function sum_rows($sql)
{
$this->db=$this->startdb();
$result=$this->db->query($sql);
$num=$result->num_rows;
$rows=$result->fetch_assoc();
$row[num]=$num;
$row[row]=$rows;
return $row;
}
}
$mymodel = new model();
?>

Mr.Moghadam
چهارشنبه 09 شهریور 1390, 16:06 عصر
1 - اینکه شما دستورات مربوط به اتصال به دیتابیس رو در سازنده کلاس که بنویسی نیازی نیست توی همه متدها دوباره اتصال رو برقرار کنی.


2 - برای کلاس session که میگی نیاز داره به کلاس مدل ، کلاس سشن رو از کلاس مدل ارث بری کن.



class model
{
public function _-construct()
{
///mysql_connect code
}
}




class session extends model
{

public function __construct()
{
parent::__constrsuct ();
}


}