PDA

View Full Version : ساختار اتصال به بانک اطلاعاتی my sql



soroush.r70
پنج شنبه 01 دی 1390, 21:50 عصر
دوستان من مجبورم برای فراخوانی هر بخش از وب سایتم هر بار به بانک اطلاعاتی متصل بشم راهی وجود نداره که من فقط یک با به دیتابیس متصل بشم براتون یه مثال می زنم امیدوارم بتونین کمک کنین

function newproject()
{
global $dbhost,$dbname,$dbuser,$dbpass,$tbl_name,$gdate2, $gdate,$op;
$link = mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($dbname,$link);
$sql="select * from `tbl_newproject` ";
$result=mysql_query($sql,$link);
if (mysql_affected_rows($link)>0)
{
while($row=mysql_fetch_assoc($result))
{
echo'

<h6>'.$row["text"].'</h6>
.................................................. ...........
';
}
}
}
/////////////////////////////////////////////////////////////////////////////////
function slide()
{
global $dbhost,$dbname,$dbuser,$dbpass,$tbl_name,$gdate2, $gdate,$op;
$link = mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($dbname,$link);
$sql="select * from `tbl_slide` ";
$result=mysql_query($sql,$link);
if (mysql_affected_rows($link)>0)
{
while($row=mysql_fetch_assoc($result))
{
echo'
<li>
<p><img alt="" src="upload/'.$row["pic"].'" /></p>
<div class="container">
<a href="#" class="info">'.$row["text"].'</a>
<a href="#">www.realdesign.ir</a>
</div>
</li>
';
}
}
}


ببینین من همیشه همین کارو می کنم که روش درستی نیست می تونین منو راهنمایی کنین چی کار کنم تا به سرور فشار نیاره در ضمن اگه می تونین امنین رو تو کد های بالا رو برام وارد کنین و یه تکه کد جدید بهم بدین ممنون

pejman_view
جمعه 02 دی 1390, 02:07 صبح
سلام

شما چندین تا راه داری
اولین راه قبل از همه چیز اتصال به دیتابیس خود را بنویسید. یعنی بیرون از هر تابع فرضاً تو مثال بالا بالای تابع newproject بنویسید.
و دیگه هر بار لازم به نوشتن تابع اتصال به دیتابیس نیستید.
دومین راه استفاده از یک تابع مخصوص که وقتی کوئری را ورودی می گیرد کار اتصال ، اجرای کوئری را بدهد و نتیجه را بصورت خروجی بدهد.
سومین راه هم اینه که وقتی برنامه نویسی شی گرا یاد بگیری می بینی چقدر بهتر بود زودتر یاد می گرفتی.

با آرزوی موفقیت

alireza.stack
جمعه 02 دی 1390, 06:49 صبح
بصورت زیر می توانید عمل کنید:
ابتدا یک تابع برای اتصال به بانک داشته باشید:



function connection($dbhost,$dbuser,$dbpass,$dbname) {
$dbc= mysql_connect($dbhost,$dbuser,$dbpass,$dbname);

}

هر موقع این تابع فراخوانی بشه به بانک متصل میشوید و نیاز به اتصال مجدد ندارید.
نکته: سعی کنید پارامترهای تابه را از نوع ثابت انتخاب کنید از نظر امنیتی بهتر هست.
می توانید اتصال بانک را که در متغیر dbc قرار دارد را توسط تابع بازگشت بدهید. (return) و در توابع بررسی کنید که آیا اتصال برقرار شده اگر برقرار شده آنگاه select خود را انجام دهید.

mtchabok
جمعه 02 دی 1390, 10:56 صبح
سلام
شاید این فعلا مشکلت رو برطرف کنه . ولی بهتره که روی روشهای بهتری کار کنی مثلا استفاده از کلاسها و یا حتی استفاده از کدهای آماده ای مثلا zend_db


function dbConnect(){
global $dbhost,$dbname,$dbuser,$dbpass;
static $link;
if(null===$link){
$link = mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($dbname,$link);
}
return $link;
}

function newproject()
{
global $dbhost,$dbname,$dbuser,$dbpass,$tbl_name,$gdate2, $gdate,$op;
$link = dbConnect();
$sql="select * from `tbl_newproject` ";
$result=mysql_query($sql,$link);
if (mysql_affected_rows($link)>0)
{
while($row=mysql_fetch_assoc($result))
{
echo'

<h6>'.$row["text"].'</h6>
.................................................. ...........
';
}
}
}
/////////////////////////////////////////////////////////////////////////////////
function slide()
{
global $dbhost,$dbname,$dbuser,$dbpass,$tbl_name,$gdate2, $gdate,$op;
$link = dbConnect();
$sql="select * from `tbl_slide` ";
$result=mysql_query($sql,$link);
if (mysql_affected_rows($link)>0)
{
while($row=mysql_fetch_assoc($result))
{
echo'
<li>
<p><img alt="" src="upload/'.$row["pic"].'" /></p>
<div class="container">
<a href="#" class="info">'.$row["text"].'</a>
<a href="#">www.realdesign.ir</a>
</div>
</li>
';
}
}
}

irGeek
جمعه 02 دی 1390, 13:05 عصر
منم با راه سوم pejman_view (http://barnamenevis.org/member.php?74371-pejman_view) موافقم! نه اینکه بقیه بد باشن
ولی وقتی شروع به برنامه نویسی با روش های اصولی کنی برنامه نویسی شی گرا برات معنی دیگه ای پیدا میکنه!