• پایان فعالیت بخشهای انجمن: امکان ایجاد موضوع یا نوشته جدید برای عموم کاربران غیرفعال شده است

آموزش پي اچ پي قسمت دوازدهم - ارتباط با مای اس کیو ال

Mehdi

مدیر بازنشسته
تاریخ عضویت
1 آگوست 2004
نوشته‌ها
5,601
لایک‌ها
49
محل سکونت
Anywhere
ارتباط با دیتابیس – MySql
Sql یک زبان ساختار یافته برای ارتباط با دیتابیس هست که بیشتر دیتابیس های sql روش های خاص خودشون رو دارن , مثل مرورگرها که برا خوندن اچ تی ام ال روش خودشون رو دارند . توضیح دادن sql در این سری آموزشی از حوصله من و شما خارج هست با این حال سعی میکنم بصورت خیلی خلاصه یه توضیحی بدم .
Mysql به عنوای یک سرویس اجرا میشه که کاربر میتونه بصورت لوکال یا ریموت بهش وصل بشه و بعد اینکه وصل شد میتونید دیتابیس تون رو انتخاب کنید البته اگه دسترسی بهش رو داشته باشید . هر دیتابیس میتونه چندین جدول داشته باشه که هرجدول شامل سطر و ستون هست . هر ستون(Column) فقط مقادیری رو میپذیره که براش تعریف شده مثلا Int برا مقادیر Integer یا Text برا مقادیر متنی .

اجازه بدید چند تا از دستورات پرکاربرد Sql رو بررسی کنیم :
PHP:
Create Table mytable(firstname VARCHAR(30),lastname VARCHAR(30),age INT);
دستور بالا یک جدول با سه ستون برا ما ایجاد میکنه که firstname و lastname به عنوان متغییر رشته ای استفاده میشه که حاوی 30 کاراکتر هست یعنی بیشتر از 30 کاراکتر قبول نمیکنه و age به عنوان متغیر عددی میتونه عددی رو قبول کنه .
برای اضافه کردن اطلاعات به این جدول اینطوری عمل میکنیم :
PHP:
INSERT INTO mytable(firstname,lastname,age)values(‘Mehdi’,’Safary’,19) ;
همونطور که میبینید ما عدد مربوط به سن رو داخل ‘ نزاشتیم چون متغیرهای عددی احتیاج ندارن که داخل ‘ قرار بگیرن . برای انتخاب این اطلاعات وارد شده از دستور :
PHP:
SELECT * From mytable;
علامت * یعنی همه ستون ها انتخاب بشن ... ما میتونیم تکی هم اینکار رو بکنیم به این صورت :
PHP:
SELECT   age  From mytable;
که تنها متغیر age انتخاب خواهد شد .
برای ذخیره یا تغییر اطلاعات یک سطر (رکورد) از این دستور استفاده میکنیم :
PHP:
UPDATE mytable SET firstname=’Mahdi’ ;
دستور بالا در تمامی سطر ها ستون firstname رو برابر Mahdi قرار میده , مسلما این همیشه چیزی نیست که میخوایم برای تغییر سطر خاصی از یک جدول از دستور WHERE استفاده میکنیم .
PHP:
UPDATE mytable SET firstname=’Mahdi’ WHERE lastname=’Safary’ ;
در دستور بالا سطری تغییر پیدا میکنه که lastname برابر با Safary باشه , در غیر اینصورت تغییری صورت گرفته نمیشه .
Mysql یکی از قدرتمند ترین دیتابیس ها و یکی از سریعترین دیتابیس های موجود هست و سادگی استفاده از اون توسط پی اچ پی باعث محبوبیت درمیان پی اچ پی کاران شده .
نحوه برقراری ارتباط با دیتابیس Mysql توسط پی اچ پی :
PHP:
$link = mysql_connect(“localhost”,”username”,”password”);
if (! $link) die(“Could not Connect To Database”);
در دستور پی اچ پی بالا ما به دیتابیس وصل میشیم دقت کنید که ما در مثال هامون فرض بر این میگیریم که بر روی کامپیوتر شخصی خودمون داریم برنامه هامون رو اجرا میکنیم و معمولا نام کاربری برابر root پسوردی وجود نداره دستور بالا به این صورت هست
PHP:
$link = mysql_connect(“localhost”,”root”,””);

برای انتخاب دیتابیس هم از دستور mysql_select_db(); استفاده میکنیم بزارید با مثالی بیشتر توضیح بدم : در این مثال ما اطلا عاتی رو وارد دیتابیس میکنیم همون اول لازمه که یک دیتابیس بسازید به اسم db1
PHP:
$dbname=”db1”;
//ertebat ro ijad mikonim
$link=mysql_connect(“localhost”,”root”,””);
// age ertebat movafag nabood error zir ro midim
if(! $link) die(“Could not connect to database”);
// database ro entekhab mikonim
mysql_select_db($dbname,$link) or die (“could not open $dbname : “.mysql_error() );
//query to tariff mikonim
$query=”INSERT INTO mytable(firstname,lastname,age)values(‘Mehdi’,’Safary’,19)”;
//query ro ejra mikonim
mysql_query($query,$link) or die(“Could not add data”.mysql_error());
// ertebat ro mibandim
mysql_close($link);
برای بدست اوردن تعداد نتیجه به این صورت عمل میکنیم :
PHP:
$result=mysql_query(“select * from mytable);
$numrows=mysql_num_rows( $result );
print "There are currently $numrows rows in the table<P>";
بزارید دو نوع از روش کشیدن داده از دیتابیس رو باهم ببینیم در روش اول ما تمام داده ها رو داخل یه حلقه قرار میدیم و میدیم بیرون :
PHP:
<?php
$db = "db1";
$link = mysql_connect( "localhost", “root”, “” );
if ( ! $link ) die( "Couldn't connect to MySQL" );
mysql_select_db( $db, $link ) or die ( "Couldn't open $db: ".mysql_error() );
$result = mysql_query( "SELECT * FROM mytable" );
$num_rows = mysql_num_rows( $result );
print "There are currently $num_rows rows in the table<P>";
print "<table border=1>\n";
while ( $a_row = mysql_fetch_row( $result ) ) {
print "<tr>\n";
foreach ( $a_row as $field )
print "\t<td>$field</td>\n";
print "</tr>\n";
}
print "</table>\n";
mysql_close( $link );
?>
خوب ما در مثال بالا تمامی اطلاعات داخل جدول mytable رو داخل یک جدول اچ تی ام ال چاپ میکنیم .
در روش دوم ما میخوایم فقط اطلاعات خاصی رو چاپ کنیم برای مثال ستون های خاصی رو چاپ کنیم نه همه ستون ها رو :
PHP:
<?php
$db = "db1";
$link = mysql_connect( "localhost", “root”, “” );
if ( ! $link ) die( "Couldn't connect to MySQL" );
mysql_select_db( $db, $link ) or die ( "Couldn't open $db: ".mysql_error() );
$result = mysql_query( "SELECT * FROM mytable" );
$num_rows = mysql_num_rows( $result );
print "There are currently $num_rows rows in the table<P>";
print "<table border=1>\n";
while ( $arow = mysql_fetch_array( $result ) )
{
print "<TR>\n";
print "<TD>$arow[firstname]</TD><TD>$arow[lastname]</TD>\n";
print "</TR>\n";
}
print "</table>\n";
mysql_close( $link );
?>

برای اپدیت کردن یا همون تغییر دادن هم کافیه از همون دستور Sql که دربالا دربارش صحبت کردیم استفاده کنیم .


در بخش های بعدی بیشتر در این مورد صحبت میکنیم تا بهتر یاد بگیریم. ;)

مهدی صفری
 

hichkas021

Registered User
تاریخ عضویت
7 می 2006
نوشته‌ها
190
لایک‌ها
0
محل سکونت
No Where
آقا دستت درد نکنه. خسته نباشی.آموزشت خیلی مفید بود.

ولی من یه سوال داشته فرق بین mysql_connect و mysql_pconnect چیه ؟
 

Mehdi

مدیر بازنشسته
تاریخ عضویت
1 آگوست 2004
نوشته‌ها
5,601
لایک‌ها
49
محل سکونت
Anywhere
Mysql_pconnect برا posgrSql هستش نه برا mysql
 

hichkas021

Registered User
تاریخ عضویت
7 می 2006
نوشته‌ها
190
لایک‌ها
0
محل سکونت
No Where

Parsa_361

کاربر فعال صفحات داینامیک
کاربر فعال
تاریخ عضویت
5 آگوست 2005
نوشته‌ها
889
لایک‌ها
10
محل سکونت
Isfahan, php.ini
به نقل از hichkas021 :
آقا دستت درد نکنه. خسته نباشی.آموزشت خیلی مفید بود.

ولی من یه سوال داشته فرق بین mysql_connect و mysql_pconnect چیه ؟
هر دوتای توابع ماله mysql هست و فرقشون اینه :

mysql_connect یک اتصال موقت با دیتابیس بر قرار میکنه که باید با تابع mysql_close ارتبات قطع بشه (یا به صورت خود کار قطع میشه)

mysql_pconnect یک اتصال دائمی با دیتابیس برقرار میکنه که نیاز به بسنت اون نیست
در هنگام اتصال با این تابع ابتدا سعی میکنه که یک اتصال دائمی با همین Host پیدا کنه (یک اتصال دائمی که قبلاً برقرار شده). اگه پیدا کرد دیگه به دیتابیس متصل نمیشه و از همون اتصال قبلی استفاده میکنه و اگه پیدا نکرد خودش یک اتصال دائمی برقرار میکنه و پس از پایان اسکریپت نیز این اتصال برقرار میمونه برای استفاده های آینده
استفاده از این تابع تاثیر بسیار زیادی در سرعت اجرای اسکریپت و فشار کمتر بر روی سرور و mysql داره
 

Mehdi

مدیر بازنشسته
تاریخ عضویت
1 آگوست 2004
نوشته‌ها
5,601
لایک‌ها
49
محل سکونت
Anywhere
به نقل از hichkas021 :
فکر نکنم اینجوری باشه . mysql_pconnect برای mysql هست. اینجا رو ببین : http://www.php.net/manual/en/function.mysql-pconnect.php

ولی من از این متن اینگلیسیش زیاد نفهمیدم چی می گه . persistent connection چیه ؟ :blink:
چه سوتی دادم
05ps_bbs12.gif
05ps_bbs21.gif
 

mohseni12345

کاربر تازه وارد
تاریخ عضویت
4 فوریه 2006
نوشته‌ها
8
لایک‌ها
0
یه نفر به من بگه چجوری میتونم سورس یه صفحه html از یه سایت دیگه رو توی یه فایل txt تو سایت خودم ذخیره کنم
خیلی وقته دارم دنبالش می گردم خواهشن جواب بدید
 

hichkas021

Registered User
تاریخ عضویت
7 می 2006
نوشته‌ها
190
لایک‌ها
0
محل سکونت
No Where
دوست عزیز این سوال شما قبلا مطرح شده بود. اگه سرچ می زدی پیدا می شد ...

PHP:
$source = file_get_contents("آدرس صفحه مورد نظر");
 

sezar

Registered User
تاریخ عضویت
24 مارس 2006
نوشته‌ها
245
لایک‌ها
54
آقا جون من یه مشکل دارم.
من تو پرتال شخصی خودم 8 تا رکورد در دسترس دارم که وقتی میخوام آپ دیت بکنمشون،یه id جدید به اون اختصاص میده و اصلا آپ دیت نمیکنه.
-------------
کدش هم اینجاست ولی کار نمیکنه:
PHP:
if ($_GET["action"] == "update"){
mysql_query("UPDATE game SET 
name=$name
text=$text
date=$date
time=$time
author=$author
cat=$cat
image=$image");
print 'updated'; 
 
};
 

shahkey

Registered User
تاریخ عضویت
16 نوامبر 2005
نوشته‌ها
1,235
لایک‌ها
5
آقا جون من یه مشکل دارم.
من تو پرتال شخصی خودم 8 تا رکورد در دسترس دارم که وقتی میخوام آپ دیت بکنمشون،یه id جدید به اون اختصاص میده و اصلا آپ دیت نمیکنه.
-------------
کدش هم اینجاست ولی کار نمیکنه:
PHP:
if ($_GET["action"] == "update"){
mysql_query("UPDATE game SET 
name=$name
text=$text
date=$date
time=$time
author=$author
cat=$cat
image=$image");
print 'updated'; 
 
};
خب بین فیلدات کاما نذاشتی که!
چه اروری میده؟
 

first saeed

Registered User
تاریخ عضویت
25 آگوست 2005
نوشته‌ها
815
لایک‌ها
2
سن
42
محل سکونت
PubliC_HtmL
خب شاکلید گفتش دیگه باید بین فیلدها ویرگول بذاری، در ضمن اگر برا کوئری شرط تعیین نکنی کل رکوردهاتو اپدیت می کنه ها ! یهو می بینی دیتا بیست پرید !
 

vahidalemi

کاربر تازه وارد
تاریخ عضویت
27 فوریه 2010
نوشته‌ها
4
لایک‌ها
0
سلام من الان این مبحث رو میخوام => آموزش پي اچ پي قسمت اول
دکمه جستجو چرا نداره سایت ؟ :(
 

amirchermahini

کاربر تازه وارد
تاریخ عضویت
9 فوریه 2013
نوشته‌ها
2
لایک‌ها
0
با سلام وعرض ادب
و تشکر از بابت مطالب فوق العاده شما استاد عزیز
من بتازگی شروع به اموزش php کرده ام و حدود 3 سال با html و css کار کرده ام
اما توی اموزش ها php هرکجا که دنبالش بودم فقط نوشته ان که بعنوان مثال این دستور رو برای ساخت دیتا بیس و این دستور رو برای برقراری ارتباط با دیتا بیس بنویسین مثلا در اموزش خود شما هم همینطور
نمونه :
Create Table mytable(firstname VARCHAR(30),lastname VARCHAR(30),age INT);
اما سوال من اینه که من wampserver نصب کرده ام و فایلهای php که مینویسم رو در ریشه اون میزارم و بعد ادرس رو در مرورگر مینویسم و فایل php منو به خوبی باز میکنه اما برای ساخت دیتا بیس وبرقراری ارتباط با دیتا بیس من باید کدها رو با چه فرمتی بنویسم ودر کجا و با چه فرمتی ذخیره کنم که مثلا یه دیتا بیس ساخته بشه و بعد هم برای برقراری ارتباط با دیتا بیس باید چطور عمل کنم


واقعا ممنون میشم اگه کسی منو راهنمایی کنه چون نزدیک به 6 ماهه که دارم دنبال جواب این سوال میگردم اما کسی جواب درستی بهم نداده
و همه میگن این کد رو کپی و پیست کن توی ریشه و اجرا کن بعد از انجام هم من هیچ واکنشی نمیبینم

باتشکر منتظ راهنماییهای پربار شما دوستان هستم
 

Pars207

Registered User
تاریخ عضویت
2 سپتامبر 2012
نوشته‌ها
3,819
لایک‌ها
1,221
محل سکونت
شهر زیبای خدا
دوستان میتونید یه سورس بزارید که 3 عمل اصلی درج ،حذف ،آپدیت رو دیتابیس را انجام بده ؟
اگه دارید بزارید اینجوری دیگه کسی سوال نمیکنه
 
Last edited:
بالا