masoud_razor
13-07-2008, 15:33
مقدمه:
در اين مقاله سعي شده است كه اصول و مباني كار با MySQL به صورتي ساده و قابل
فهم براي كساني كه تازه شروع به كار با پايگاههاي داده را كردهاند، گفته شود.
PHP به صورت از پيش تعريف شده، اكثر پايگاههاي داده را پشتيباني ميكند: dBase,
FilePro, mSQL, MySQL,Oracle, PostgreSQL,Sybase.اگر شما بخواهيد از پايگاه هاي
دادهاي كه
به صورت از پيش تعريف شده پشتيباني نمي شوند، استفاده كنيد (مانند Access و يا
SQL Server) بايد از توابع PHP ODBC (Open DataBase Connectivity) به همراه راهاندازهاي
پايگاه داده (ODBC Drivers) استفاده كنيد.
MySQL يكي از انواع سرويس دهندههاي پايگاه داده است كه با وجود اينكه نسبت به
سايرDBMS هاي موجود زياد قدرتمند نميباشد، اما به علت قيمت و عملكرد مناسب آن،
مورد استفاده گسترده قرار ميگيرد.
طريقه اتصال به MySQL
قبل از شروع هر كاري بايد به MySQL متصل شويم. براي اين كار از دستور
<?
$Conn=mysql_connect($Location,$Username,$Password) ; ?>
استفاده ميكنيم. تابع mysql_connect داراي سه آرگومان ميباشد. آرگومان اول ،
ميزبان (Host) را مشخص ميكند. دو آرگومان بعدي، نام كاربري و كد رمز را براي اتصال
به پايگاه داده، ارسال ميكنند. در صورتي كه اتصال با شكست مواجه شود، پيغام خطايي
درbrowser نشان داده ميشود.
با استفاده از دستور
<? mysql_select_db($database)?>
بانك اطلاعاتي مورد نظر انتخاب خواهد شد و از اين پس كارهاي شما همه بر روي اين
بانك انجام خواهد گرفت. در صورتي كه بانك مورد نظر پيدا نشد، پيغام خطايي نشان
داده ميشود.
ايجاد يك بانك اطلاعاتي در MySQL
<? if (mysql_creat_db($database,$Conn)
{ print(“The database,$database,was { successfully created!<BR>n”);
else
{ print(" The database,$database, could not be created! <BR>\n”);}
?>
پس از اتصال به MySQL شما ميتوانيد با استفاده از دستور
<? mysql_creat_db($database,$Conn); ?>
يك بانك اطلاعاتي جديد ايجاد كنيد. اين دستور شامل دو آرگومان : نام بانك اطلاعاتي
و نام لينك مورد نظربه پايگاه داده ميباشد. در صورتي كه عمل ايجاد با موفقيت
انجام شده باشد، پيغامي مبني بر اين موضوع نمايش داده ميشود و در غير اينصورت،
به كاربر اعلام ميشود كه عمليات نتيجه نداشته است.
انجام كارهاي مختلف بر روي بانك اطلاعاتي در MySQL
براي انجام كارهاي مختلف بر روي بانك اطلاعاتي ازدستورات SQL استفاده ميكنيم.
روند استخراج اطلاعات از يك پايگاه داده به اين صورت است كه ابتدا يك query به
زبان SQL نوشته ميشود وسپس اين query با استفاده ازدستور
mysql_db_query($database,$Query);
عمليات لازم را بر روي بانك اطلاعاتي انتخاب شده، انجام ميدهد.
فرم كلي به صورت زير است:
<?$Query=”text for the query goes here in SQL format";
if (mysql_db_query($database,$Query))
}
print( “The query was successfully executed!<BR>\n”);
{
else
}
print(“The query could not be executed!<BR>\n”);
{ ?>
· ايجاد يك جدول
براي ايجاد يك جدول ، اين query را مي نويسيم:
<?
$Query=”CREATE table $Tablename(id INT PRIMARY KEY ,
Firstname char(12), Lastname char(15))”;
?>
با استفاده ازاين query، جدول جديدي ايجاد ميشود كه شامل يك فيلد به نام id (
كه Primary keyاست) و فيلدي به نام Firstname از نوع كاراكتري با طول 12 و همچنين
فيلدي به نام Lastname با طول 15 مي باشد.
· ارسال دادهها به بانك اطلاعاتي
براي ارسال دادهها به بانك اطلاعاتي اين q uery را مي نويسيم:
<?$Query=“INSERT into $Tablename(‘value1’, ‘value2’, ‘value3’,…)”;?>
توجه داشته باشيد كه تعداد مقاديري كه در اين q uery مشخص
ميشوند، بايد با تعداد ستونهاي جدول و همچنين نوع آن برابر باشد. در غيراينصورت
query كارنميكند.
· بازيابي اطلاعات و نمايش آن
به قطعه كد زير توجه كنيد:
<?
$query = "SELECT * FROM $Tablename“;
$result = mysql_query($query);
$numrows = mysql_num_rows($result);
while($row = mysql_fetch_array($result))
{
echo \"You have $numrows user(s) in the database”;
echo \"ID number : $row[id]”;
echo \"firstname: $row[firstname]”;
echo \"Lastname: $row[lastname]”;
}
?>
در خط اول، queryاي نوشته شده است كه تمام ركوردهاي موجود درTable را انتخاب ميكند
و سپس در خط دوم، اين query برروي بانك اطلاعاتي اجرا ميشود و در خط سوم تعداد
ركوردهاي موجود درTable ، در متغيير numrows ذخيره ميگردد و سپس با استفاده از
حلقهً while ( كه تعداد loop آن به اندازه ركوردهاي Table است) ركوردها، خوانده
شده و نمايش داده ميشود.
· تغيير اطلاعات موجود در بانك اطلاعاتي
براي اين كار كافي است كه از queryاي استفاده كنيم كه در آن دستورUPDATE به كار
برده شده باشد.بطور مثال:
<?$Query=“UPDATE $Tablename SET firstname=’mina’ WHERE
firstname=’maryam’”; ?>
اين query ، اسامي موجود درTable مورد نظر را در صورتي كه برابر با mina باشد،
به maryam تغيير ميدهد.
نكته:
· بعد از اتمام كار، به وسيله دستور
<?mysql_close($Conn);?>
اتصال بهMySQL را قطع كنيد. اين دستور شامل يك
آرگومان است، كه همان متغيراشاره گر،به MySQL ميباشد.
· بيشترين اشتباهات و خطاهاي به وجود آمده، مربوط به نحوه
نوشتن queryها مي باشد. چنانچه در دستورات PHP ، هيچ
نوع اشكال منطقياي مشاهده نكرديد، q uery مورد نظر را
بررسي كنيد. به احتمال زياد مشكل حل خواهد شد.
· شما مي توانيد به جاي دستور
<?mysql_db_query( );
از دستور
<?mysql_query( );?>
استفاده كنيد. البته هر كدام از اين دستورات، كاربردهاي خاص خود را دارند كه توصيه
ميشود براي آگاهي،h elp مربوطه را در PHP ، مطالعه بفرماييد.
· توجه داشته باشيد كه باز و بسته شدنهاي متعدد Database موجب به وجود آمدن
حفرههايي ميشود كه امنيت اطلاعات را به خطر مياندازد ( براي آگاهي بيشتر، ميتوانيد
از منابعي در مورد Security، استفاده كنيد.) لذا توصيه ميشود با دستهبندي مناسب
عمليات مورد نياز روي D atabase،تعداد دفعات باز و بسته شدن D atabase را به حداقل
برسانيد.
· يك نكته ساده و در عين حال جالب(مخصوص مبتديها):
يك Database و يا يك Table را نميشود بيش از يك باربه وجود آورد.!! بنابراين
در صورتي كه هنگام به وجود آوردن Database و يا Tableاي ، مدام با Error برخورد
ميكنيد و هيچ نوع توجيهاي براي آن نمييابيد، پيشنهاد ميشود كه با بررسي Mysql_Front
از وجود نداشتن Database و يا Tableمورد نظر مطمئن شويد.
در اين مقاله سعي شده است كه اصول و مباني كار با MySQL به صورتي ساده و قابل
فهم براي كساني كه تازه شروع به كار با پايگاههاي داده را كردهاند، گفته شود.
PHP به صورت از پيش تعريف شده، اكثر پايگاههاي داده را پشتيباني ميكند: dBase,
FilePro, mSQL, MySQL,Oracle, PostgreSQL,Sybase.اگر شما بخواهيد از پايگاه هاي
دادهاي كه
به صورت از پيش تعريف شده پشتيباني نمي شوند، استفاده كنيد (مانند Access و يا
SQL Server) بايد از توابع PHP ODBC (Open DataBase Connectivity) به همراه راهاندازهاي
پايگاه داده (ODBC Drivers) استفاده كنيد.
MySQL يكي از انواع سرويس دهندههاي پايگاه داده است كه با وجود اينكه نسبت به
سايرDBMS هاي موجود زياد قدرتمند نميباشد، اما به علت قيمت و عملكرد مناسب آن،
مورد استفاده گسترده قرار ميگيرد.
طريقه اتصال به MySQL
قبل از شروع هر كاري بايد به MySQL متصل شويم. براي اين كار از دستور
<?
$Conn=mysql_connect($Location,$Username,$Password) ; ?>
استفاده ميكنيم. تابع mysql_connect داراي سه آرگومان ميباشد. آرگومان اول ،
ميزبان (Host) را مشخص ميكند. دو آرگومان بعدي، نام كاربري و كد رمز را براي اتصال
به پايگاه داده، ارسال ميكنند. در صورتي كه اتصال با شكست مواجه شود، پيغام خطايي
درbrowser نشان داده ميشود.
با استفاده از دستور
<? mysql_select_db($database)?>
بانك اطلاعاتي مورد نظر انتخاب خواهد شد و از اين پس كارهاي شما همه بر روي اين
بانك انجام خواهد گرفت. در صورتي كه بانك مورد نظر پيدا نشد، پيغام خطايي نشان
داده ميشود.
ايجاد يك بانك اطلاعاتي در MySQL
<? if (mysql_creat_db($database,$Conn)
{ print(“The database,$database,was { successfully created!<BR>n”);
else
{ print(" The database,$database, could not be created! <BR>\n”);}
?>
پس از اتصال به MySQL شما ميتوانيد با استفاده از دستور
<? mysql_creat_db($database,$Conn); ?>
يك بانك اطلاعاتي جديد ايجاد كنيد. اين دستور شامل دو آرگومان : نام بانك اطلاعاتي
و نام لينك مورد نظربه پايگاه داده ميباشد. در صورتي كه عمل ايجاد با موفقيت
انجام شده باشد، پيغامي مبني بر اين موضوع نمايش داده ميشود و در غير اينصورت،
به كاربر اعلام ميشود كه عمليات نتيجه نداشته است.
انجام كارهاي مختلف بر روي بانك اطلاعاتي در MySQL
براي انجام كارهاي مختلف بر روي بانك اطلاعاتي ازدستورات SQL استفاده ميكنيم.
روند استخراج اطلاعات از يك پايگاه داده به اين صورت است كه ابتدا يك query به
زبان SQL نوشته ميشود وسپس اين query با استفاده ازدستور
mysql_db_query($database,$Query);
عمليات لازم را بر روي بانك اطلاعاتي انتخاب شده، انجام ميدهد.
فرم كلي به صورت زير است:
<?$Query=”text for the query goes here in SQL format";
if (mysql_db_query($database,$Query))
}
print( “The query was successfully executed!<BR>\n”);
{
else
}
print(“The query could not be executed!<BR>\n”);
{ ?>
· ايجاد يك جدول
براي ايجاد يك جدول ، اين query را مي نويسيم:
<?
$Query=”CREATE table $Tablename(id INT PRIMARY KEY ,
Firstname char(12), Lastname char(15))”;
?>
با استفاده ازاين query، جدول جديدي ايجاد ميشود كه شامل يك فيلد به نام id (
كه Primary keyاست) و فيلدي به نام Firstname از نوع كاراكتري با طول 12 و همچنين
فيلدي به نام Lastname با طول 15 مي باشد.
· ارسال دادهها به بانك اطلاعاتي
براي ارسال دادهها به بانك اطلاعاتي اين q uery را مي نويسيم:
<?$Query=“INSERT into $Tablename(‘value1’, ‘value2’, ‘value3’,…)”;?>
توجه داشته باشيد كه تعداد مقاديري كه در اين q uery مشخص
ميشوند، بايد با تعداد ستونهاي جدول و همچنين نوع آن برابر باشد. در غيراينصورت
query كارنميكند.
· بازيابي اطلاعات و نمايش آن
به قطعه كد زير توجه كنيد:
<?
$query = "SELECT * FROM $Tablename“;
$result = mysql_query($query);
$numrows = mysql_num_rows($result);
while($row = mysql_fetch_array($result))
{
echo \"You have $numrows user(s) in the database”;
echo \"ID number : $row[id]”;
echo \"firstname: $row[firstname]”;
echo \"Lastname: $row[lastname]”;
}
?>
در خط اول، queryاي نوشته شده است كه تمام ركوردهاي موجود درTable را انتخاب ميكند
و سپس در خط دوم، اين query برروي بانك اطلاعاتي اجرا ميشود و در خط سوم تعداد
ركوردهاي موجود درTable ، در متغيير numrows ذخيره ميگردد و سپس با استفاده از
حلقهً while ( كه تعداد loop آن به اندازه ركوردهاي Table است) ركوردها، خوانده
شده و نمايش داده ميشود.
· تغيير اطلاعات موجود در بانك اطلاعاتي
براي اين كار كافي است كه از queryاي استفاده كنيم كه در آن دستورUPDATE به كار
برده شده باشد.بطور مثال:
<?$Query=“UPDATE $Tablename SET firstname=’mina’ WHERE
firstname=’maryam’”; ?>
اين query ، اسامي موجود درTable مورد نظر را در صورتي كه برابر با mina باشد،
به maryam تغيير ميدهد.
نكته:
· بعد از اتمام كار، به وسيله دستور
<?mysql_close($Conn);?>
اتصال بهMySQL را قطع كنيد. اين دستور شامل يك
آرگومان است، كه همان متغيراشاره گر،به MySQL ميباشد.
· بيشترين اشتباهات و خطاهاي به وجود آمده، مربوط به نحوه
نوشتن queryها مي باشد. چنانچه در دستورات PHP ، هيچ
نوع اشكال منطقياي مشاهده نكرديد، q uery مورد نظر را
بررسي كنيد. به احتمال زياد مشكل حل خواهد شد.
· شما مي توانيد به جاي دستور
<?mysql_db_query( );
از دستور
<?mysql_query( );?>
استفاده كنيد. البته هر كدام از اين دستورات، كاربردهاي خاص خود را دارند كه توصيه
ميشود براي آگاهي،h elp مربوطه را در PHP ، مطالعه بفرماييد.
· توجه داشته باشيد كه باز و بسته شدنهاي متعدد Database موجب به وجود آمدن
حفرههايي ميشود كه امنيت اطلاعات را به خطر مياندازد ( براي آگاهي بيشتر، ميتوانيد
از منابعي در مورد Security، استفاده كنيد.) لذا توصيه ميشود با دستهبندي مناسب
عمليات مورد نياز روي D atabase،تعداد دفعات باز و بسته شدن D atabase را به حداقل
برسانيد.
· يك نكته ساده و در عين حال جالب(مخصوص مبتديها):
يك Database و يا يك Table را نميشود بيش از يك باربه وجود آورد.!! بنابراين
در صورتي كه هنگام به وجود آوردن Database و يا Tableاي ، مدام با Error برخورد
ميكنيد و هيچ نوع توجيهاي براي آن نمييابيد، پيشنهاد ميشود كه با بررسي Mysql_Front
از وجود نداشتن Database و يا Tableمورد نظر مطمئن شويد.