i
در حال برنامه نویسی و آماده سازی نسخه جدید «وبگو» هستیم، در این نسخه قابلیت ها و ظاهر سایت به کلی متفاوت و کاملتر خواهد بود، این فرآیند زمانبر و از مدتی پیش شروع شده و همچنان ادامه دارد، روند پیشرفت پروژه در این قسمت به صورت درصدی مشخص است و به تناوب به روزرسانی می شود.
نکته:
با توجه به تاریخ نگارش آموزش های سایت و پیشرفت تکنولوژی های مرتبط با وب در سالیان اخیر، محتوای برخی از مطالب قدیمی ممکن است نیاز به ویرایش و به روزرسانی داشته باشند که این کار هم زمان با تهیه نسخه جدید «وبگو» به مرور در حال انجام است، لطفا در استفاده از مطالب سایت به این نکته دقت داشته و حتی المقدور از چند منبع مختلف استفاده نمائید.
article

آموزش MySQL، سیستم مدیریت پایگاه داده

mysql

ذخیره اطلاعات به صورت دسته بندی شده و دسترسی سریع به آنها ضرورتی بود که باعث ایجاد سیستم های مدیریت پایگاه داده رابطه ای (Relational Database Management System یا به اختصار RDBMS) در دنیای برنامه نویسی و به تبع برنامه نویسی وب شد، اگر یک برنامه نویس PHP باشیم و بخواهیم به طور مثال سرویس فرهنگ لغات آنلاین طراحی کنیم، قاعدتا اولین مشکلی که با آن روبرو خواهیم شد این است که لغات را در کجا ذخیره و چگونه آنها را فراخوانی کنیم، چگونه کلمه مورد نظر کاربر را از بین کلمات موجود جستجو کرده و نتیجه را پس از پردازش به صفحه مرورگر ارسال نمائیم و سوالاتی از این دست، لذا ناگزیر بحث استفاده از یک سیستم مدیریت پایگاه داده جهت ذخیره، جستجو، انتخاب، ویرایش و حذف اطلاعات مطرح می شود که در وب و بخصوص برای برنامه نویسان PHP اولین و شاید بهترین انتخاب MySQL باشد، اینکه چرا و چگونه از MySQL در کدنویسی PHP خود استفاده کنیم، مبحثی است که در سلسله آموزش های مقدماتی پیش رو به آن خواهیم پرداخت.

MySQL چیست و چه کاربردی دارد؟


قبل از هر چیز بهتر است به این سوال پاسخ دهیم که MySQL چیست و چه کاربردی دارد؟ در پاسخ می توان گفت که MySQL یکی از پرکاربردترین سیستم های متن باز (Open-source) مدیریت پایگاه داده است که توسط شرکت سوئدی MySQL AB ایجاد و اولین نسخه آن در سال 1995 معرفی شد (مالکیت شرکت MySQL AB در حال حاضر در اختیار شرکت Oracle است)، SQL در واقع زبانی است که برای استفاده در سیستم های مدیریت پایگاه داده رابطه ای (RDBMS) طراحی شده و عبارت MySQL اشاره به این زبان دارد، در واقع MySQL برای اجرای دستورات ما مانند دستور ساخت جدول، ذخیره، جستجو، انتخاب، ویرایش و حذف اطلاعات از زبان SQL استفاده می کند و لذا آشنایی قبلی با SQL می تواند فراگیری کار با MySQL را بیش از پیش ساده کند، از آنجایی که این سیستم مدیریت پایگاه داده جزئی از خانواده موسوم به LAMP (مخفف Linux, Apache, MySQL, Perl/PHP/Python) است لذا بیشترین سازگاری و کارایی را در این حیطه دارد و انتخاب اول برنامه نویسان PHP به حساب می آید، با MySQL می توانیم اطلاعات مورد نظر را در دیتابیسی که در سرور ایجاد می کنیم ذخیره کرده آنها را بر طبق اهداف برنامه به صورت حرفه ای دسته بندی و هر زمان نیاز بود در اطلاعات جستجو نموده و مقادیر دلخواه را استخراج نمائیم، این قابلیت ها برای طراحی برنامه های داینامیک وب جزء ملزومات اولیه هستند و MySQL به خوبی این نیازها را پوشش می دهد، استفاده سایت های معروفی مانند Google، Facebook، Twitter، Flicker و YouTube از این پایگاه داده نشان دهنده حرفه ای و کارآمد بودن آن است.

ساختار کلی و نحوه دسته بندی اطلاعات در پایگاه داده


همان طور که اشاره شد پایگاه داده جزء کلیدی در برنامه های کاربردی تحت وب محسوب می شود و لذا شناخت ساختار کلی و نحوه دسته بندی اطلاعات در آن اهمیت ویژه ای دارد، در MySQL هر پایگاه داده (Database) یک نام بخصوص دارد و حداقل از یک جدول (Table) اطلاعاتی تشکیل شده است، جداول نیز خود شامل زیر مجموعه هایی هستند که به آنها ستون (Column) می گویند که سطرح های اطلاعات (Rows) را در خود جای می دهند، به طور مثال دیتابیس زبان های برنامه نویسی می تواند شامل جدول برنامه نویسی دسکتاپ، برنامه نویسی موبایل و برنامه نویسی وب باشد، به همین صورت هر جدول می تواند شامل ستون (Column) و سطرها (Rows) باشد، سطرح ها در واقع همان ردیف های اطلاعات هستند که در جدول برای هر ستون ذخیره می شوند (تصویر زیر):
MySQL Database Structure
در نمونه ساختار فوق programming_languages نام دیتابیس، desktop نام جدول و id، name و status ستون های دیتابیس هستند که سطرح های اطلاعاتی را شامل می شوند (نام دیتابیس، جدول و ستون ها در مثال فرضی و به تعداد دلخواه می باشند).

مدیریت پایگاه داده MySQL با phpMyAdmin


برنامه نویسان PHP معمولا از دو طریق می توانند به سیستم مدیریت پایگاه داده MySQL دسترسی داشته باشند، با استفاده از برنامه phpMyAdmin و همچنین با کدنویسی PHP، برنامه phpMyAdmin جهت مدیریت به اصطلاح دستی MySQL و اعمال تغییراتی مانند ساخت پایگاه داده جدید، ساخت جداول، ستون ها، تغییر ویژگی های جداول و ستون ها و مواردی از این دست کاربرد دارد و تقریبا هر کاربری با هر سطح از آشنایی با برنامه نویسی می تواند با محیط آن ارتباط برقرار کرده و نیازهای خود را مرتفع کند، phpMyAdmin در واقع برنامه ای نوشته شده به PHP با هدف مدیریت پایگاه داده با استفاده از رابط کاربری ساده و تحت مرورگر است تا هم انجام موارد اولیه، برپایی پایگاه داده و اعمال تغییرات بعدی در آن آسان و روند کار تسریع شود و هم کاربران مختلف با هر سطح از آشنایی با PHP بتوانند بدون دغدغه و احیانا نگرانی از سردرگمی، با محیط MySQL ارتباط برقرار کنند، به هر صورت برای آشنایی بیشتر می توانیم به سایت مرجع این برنامه مراجعه کنیم:
https://www.phpmyadmin.net
همچنین می توانیم با پیش نمایشی از این برنامه در آدرس زیر کار کنیم که برای شروع امکان بسیار خوبی است:
https://demo.phpmyadmin.net/master-config
یادآور می شویم که این برنامه معمولا به صورت از پیش نصب شده در سرورهای لینوکس یا برنامه های سرور مجازی (Localhost) وجود دارد و کافی است از پنل مدیریت هاست سایت یا از طریق آدرس 
localhost/phpmyadmin
در لوکال به آن دسترسی پیدا کنیم، در برنامه های سرور مجازی معمولا با نام کاربری root و بدون پسورد می توانیم وارد محیط برنامه phpMyAdmin شویم.

ارتباط PHP با پایگاه داده MySQL


همان طور که اشاره شد با کدنویسی PHP می توانیم به پایگاه داده MySQL دسترسی داشته و بین کدهای PHP با سیستم مدیریت پایگاه داده MySQL ارتباط برقرار کنیم، این قابلیت باعث می شود بتوانیم برنامه های حرفه ای تحت وب که معمولا نیازمند نگهداری داده ها در یک بانک اطلاعاتی مطمئن هستند را طراحی و عملیاتی از قبیل ذخیره سازی، دسته بندی، جستجو، انتخاب، ویرایش و حذف ردیف ها را به صورت سیستماتیک و با کمک دستورات برنامه نویسی انجام دهیم، به طور مثال کاربر می تواند در فیلد جستجوی برنامه تحت وب عبارت مورد نظر خود را وارد کرده و ما با دستورات PHP به MySQL می گوییم که ردیف های متناسب با کلمه درخواستی کاربر را انتخاب و به عنوان نتیجه به مفسر PHP برگرداند، در ادامه نتیجه دریافتی را با کدنویسی PHP تجزیه تحلیل نموده و خروجی نهایی را مطابق هدف برنامه به کاربر نشان دهیم، این ارتباط با کمک برنامه هایی تحت عنوان اکستنشن (Extension) صورت می گیرد، اکستنش ها در واقع بسته های نرم افزاری هستند که به هسته PHP امکان انجام عملیات های خاص مانند اتصال و مدیریت پایگاه داده را می دهند، در PHP برای این منظور پیشتر از اکستنشن قدیمی MySQL استفاده می شد (سیستم مدیریت پایگاه داده MySQL با اکستنشن MySQL دو عبارت مجزا هستند!) که در نسخه 7 PHP منسوخ و به صورت پیش فرض حذف شده است و توصیه می شود برای برنامه های جدید اکستنشن MySQLi یا PDO را جایگزین آن نمائیم، اکستنشن MySQLi نسخه بهبود یافته از اکستنشن MySQL (حرف i پایانی مخفف improved) بوده و شیوه نگارش دستورات آن در حالت برنامه نویسی رویه ای شباهت زیادی به شیوه نگارش دستورات MySQL دارد، همچنین MySQLi اکستنشن اختصاصی PHP برای کار با سیستم مدیریت پایگاه داده MySQL بوده و بیشترین سازگاری را با امکانات آن دارد (با توجه به این دلایل در آموزش های پیش رو از این اکستنشن در مثال ها استفاده خواهیم کرد)، PDO (مخفف PHP Data Objects) اکستنشن دیگری است که می تواند جایگزین MySQL شود، PDO اکستنشن غیراختصاصی PHP برای کار با پایگاه داده و از جمله پایگاه داده MySQL است، این اکستنشن در مقایسه با MySQLi سازگاری کمتری با امکانات سیستم مدیریت پایگاه داده MySQL دارد اما به لحاظ حجم کم (Lightweight)، حرفه ای بودن و امکان کار با سیستم های مختلف پایگاه داده می تواند در برنامه های تحت وب گزینه مناسبی باشد (در طراحی پیشرفته برنامه ها می توانیم با جدا کردن بخش اجرای پرس و جوهای دیتابیس، امکانی در نظر بگیریم که کاربر به دلخواه خود اکستنشن مورد نظر را انتخاب کند، این کار صرفا جنبه تزئینی ندارد و در مواردی که یک اکستشن به هر دلیل کارایی ندارد می تواند راهگشا باشد).

پشتیبانی MySQLi از برنامه نویسی رویه ای و شی گراء


اکستنشن MySQLi از دو شیوه برنامه نویسی رویه ای (Procedural) و شی گراء (Object-oriented) پشتیبانی می کند، در این سری از آموزش ها نمونه کدها هم به شیوه رویه ای و هم به شیوه شی گراء ارائه می شوند، یادآور می شویم که دو روش در عمل کارکرد مشابه دارند و تفاوت در نحوه کدنویسی و مدیریت ساختار برنامه است، هرچند بحث در مورد تفاوت برنامه نویسی رویه ای و شی گراء باید در جای خود بررسی شود اما در یک تحلیل ساده معمولا از کدنویسی رویه ای برای نوشتن برنامه ها و پروژه های کوچک به عنوان روش به اصطلاح دم دستی استفاده می شود و برنامه نویسی شی گراء برای ایجاد ساختارهای پیچیده تر و نوشتن برنامه هایی با جزئیات بیشتر کاربرد دارد، خوشبختانه PHP در این زمینه سخاوتمند است و حق انتخاب را به کاربران می دهد، توصیه ما این است که ضمن فراگیری روش رویه ای به عنوان شیوه پایه و مقدماتی، پروژه های کاربردی و پر جزئیات خود را به روش شی گراء (OOP یا Object-oriented programming) بنویسیم.

اتصال PHP به MySQL با اکستنشن MySQLi


همان طور که گفتیم PHP در نسخه های جدید خود استفاده از اکستنشن MySQL را توصیه نمی کند و آن را به حالت Deprecated درآورده است که یعنی استفاده از آن توصیه نمی شود و حتی از نسخه PHP 7 به بعد دیگر این اکستنشن در مفسر PHP به صورت پیش فرض وجود ندارد، دلیل این موضوع رشد امکانات و قابلیت های PHP در طی سالیان گذشته و قدیمی شدن اکستنشن MySQL در طی این فرآیند است، همچنین قابلیت های زیادی به سیستم مدیریت پایگاه داده MySQL اضافه شده است که با اکستنشن قدیمی MySQL امکان استفاده بهینه از آنها وجود ندارد، به طور مثال در بخش حفظ امنیت برنامه های نوشته شده به PHP استفاده از این اکستنشن باید با دقت و تسلط کافی صورت گیرد تا با حملات موسوم به SQL Injection روبرو نشویم که این با هدف استفاده همگان از PHP در تضاد است و در اکستنشن های جدید (MySQLi و PDO) امنیت کدهای PHP به شکل محسوسی بهبود یافته، همچنین نگهداری فنی و ایجاد تغییرات بعدی در برنامه های نوشته شده با اکستنشن MySQL در مقایسه با اکستنشن های جدید به نسبت زمانبر و حساستر است، به هر صورت با آگاهی از این موارد می خواهیم ببینیم که چگونه با استفاده از دستورات MySQLi در PHP می توان به دیتابیس MySQL متصل شد، در نمونه کد زیر این کار انجام شده است.
برنامه نویسی رویه ای (Procedural):
<?php
//اتصال به دیتابیس
$conn = mysqli_connect("localhost", "username", "password", "dbname");
if(!$conn) {
    echo "PHP & MySQL Connection: Error! " . mysqli_connect_errno() . ' - ' . mysqli_connect_error();
    exit;
} else {
    echo "PHP & MySQL Connection: Ok!<br>";
}
//پایان اتصال
mysqli_close($conn);
?>
برنامه نویسی شی گراء (Object-oriented):
<?php
//اتصال به دیتابیس
$conn = new mysqli("localhost", "username", "password", "dbname");
if(!$conn) {
    echo "PHP & MySQL Connection: Error! " . $conn->errno() . ' - ' . $conn->error();
    exit;
} else {
    echo "PHP & MySQL Connection: Ok!<br>";
}
//پایان اتصال
$conn->close();
?>
برای استفاده از نمونه کد بالا قبل از هرچیز باید یک پایگاه داده ساخته باشیم، برای انجام این کار می توانیم از برنامه phpMyAdmin وارد سربرگ Databases شده و در فیلد "Create database" نام پایگاه داده مد نظر خود را وارد و بر روی دکمه "create" کلیک نمائیم، باید دقت کنیم در لوکال می توانیم به صورت پیش فرض با نام کاربری root و بدون پسورد از دیتابیس استفاده کنیم اما در سرور اصلی معمولا باید ابتدا یک نام کاربری با کلمه عبور ساخته و آن را برای استفاده از پایگاه داده مد نظر تنظیم نمائیم، این موارد از طریق برنامه هایی مانند DirectAdmin ،cPanel و... قابل انجام است، به طور مثال در cPanel از قسمت Databases گزینه MySQL Databases با امکاناتی نظیر Create New Database، MySQL Users، Add New User، Add User To Database و... می توانیم یک دیتابیس و کاربر ساخته و در نهایت کاربر را به دیتابیس اختصاص دهیم (اجازه استفاده از دیتابیس را به کاربر مد نظر بدهیم).
در شرح نمونه کد بالا ابتدا اطلاعات پایگاه داده خود را که قبلا ساخته ایم در مقادیر مشخص شده وارد می کنیم، به جای username نام کاربری پایگاه داده، در قسمت password کلمه عبور و در قسمت dbname نام دیتابیسی که ساخته ایم را می نویسیم، اگر همه چیز درست باشد پیام "PHP & MySQL Connection: Ok" را در خروجی خواهیم داشت در غیر این صورت قسمت else اجرا شده و خطای مربوطه نشان داده می شود، نهایتا نیز با تابع mysqli_close (در برنامه نویسی رویه ای) و متد close (در برنامه نویسی شی گراء) به ارتباط پایان می دهیم (در حال حاضر نیازی به درک عمیق دستورات MySQLi نیست، صرف آشنایی ظاهری با نمونه کدها برای این سطح کفایت می کند).
sectionدسته بندی: آموزش مقدماتی » MySQL
related مطالب بیشتر:
» انتخاب ردیف ها با دستور SELECT FROM در MySQL
» توابع تجمعی (Aggregate Functions) در MySQL
» ساخت دیتابیس، جدول و ستون با دستور CREATE در MySQL
» حذف مقادیر از MySQL با دستور DELETE
» استفاده از ORDER و GROUP در MySQL
commentنظرات (۵۷ یادداشت برای این مطلب ارسال شده است)
more یادداشت های جدید بر اساس تاریخ ارسال در انتهای یادداشت های موجود نمایش داده می شوند.
نویسنده: محسن طحانیان
زمان: ۰۹:۵۴:۴۹ - تاریخ: ۱۳۹۱/۰۷/۰۳
سلام خسته نباشید
من هر کاری می کنم که MySQL رو توی ویندوزم پیکربندی کنم نمیتونم، البته با نرم افزار XAMPP دارم آموزش می بینم
اگه براتون امکان داره کمکم کنید
راستی توی ویندوز7 میشه این پیکربندی رو انجام داد؟؟؟؟
با تشکر از سایت خوب و پربارتون
پاسخ: 
لطفا اطلاعات دقیق تری از مشکل ارائه دهید تا بتوانیم راهنمایی کنیم، همچنین در این مورد در صفحه زیر مشکلات مشابهی مطرح شده:
http://www.sevenforums.com/software/22151-xampp-not-working-windows-7-a.html
نویسنده: javad
زمان: ۱۶:۵۱:۲۳ - تاریخ: ۱۳۹۱/۰۸/۱۹
سلام...
آیا برای مدیریت یک سایت حتما نیاز به آن داریم که یک پایگاه داده برای اون سایت ایجاد کنیم؟؟؟؟
من یه سایتی طراحی کردم و می خوام آپلودش کنم باید پایگاه داده بسازم؟!!!
پاسخ: 
استفاده یا عدم استفاده از پایگاه داده بستگی به هدف، زبان برنامه نویسی و نوع صفحات سایت شما دارد، اگر مطالب سایت شما خیلی به ندرت به روز می شود و در واقع سایت متشکل از چند یا چندین صفحه از پیش طراحی شده ثابت است، نیازی به دیتابیس نیست، اما اگر مانند خیلی از سایت ها، از بخش هایی تشکیل شده که به تناوب باید به روز و به صورت سیستماتیک مدیریت شوند، الزاما باید از پایگاه داده استفاده کنید و آن را با سیستم مدیریت سایت خود ارتباط دهید.
نویسنده: مصطفي
زمان: ۲۱:۵۱:۳۶ - تاریخ: ۱۳۹۱/۰۹/۱۷
با سلام و تشكر من دارم يك سايت ميسازم و نياز به پايگاه داده داره لطفا راهنمايي كنيد من اول بايد نرم افزار ماي اسكيو ال را نصب كنم و داخل آن ديتابيس بسازم -- چطوري؟ و بعد توي سايتم با پي اچ پي به آن كانكت شم يا اينكه از داخل سايت يك ديتابيس بسازم لطفا منو راهنمايي كنيد من عجله دارم
پاسخ: 
باید ابتدا با PHP و MySQL به اندازه کافی آشنا باشید تا بعد اقدام به طراحی و راه اندازی سایت کنید! به هر صورت، استفاده از پایگاه داده در دو صورت امکان پذیر است، از طریق سیستم شخصی (لوکال هاست) و از طریق سرور (هاست آنلاین)، برنامه های سرور مجازی یا همان لوکال هاست مانند WampServer تنها یک شبیه ساز هستند، یعنی امکان تبدیل کامپیوتر شخصی به یک سرور مجازی را فراهم می کنند و ارتباطی به یک سایت آنلاین ندارند، پس از نصب یک برنامه لوکال هاست و اجرای برنامه، اگر آدرس localhost را در مرورگر وارد کنید، صفحه اول سرور مجازی شما قابل دسترس خواهد بود که در همان جا معمولا برنامه phpMyAdmin نیز قابل استفاده است، برای سایت هایی که قصد انتشار در وب دارند باید از کنترل پنل هاست دیتابیس بسازید و از برنامه هایی مانند phpMyAdmin (که در پنل هاست وجود دارد) آن را مدیریت کنید.
نویسنده: نیما
زمان: ۲۰:۳۸:۳۶ - تاریخ: ۱۳۹۲/۰۵/۲۹
با سلام
من سایتی طراحی کردم و برای قسمت سفارش کالا در نظر دارم اطلاعات رو به صاحب سایت ایمیل کنم اما اطلاعات فارسی رو به صورت کاراکتر های اسکی نمایش می ده و نمی دونم باید چه کنم؟
از متد post استفاده کردم و 5 html و charecter: utf-8
پاسخ: 
باید هدرهای مربوط به utf-8 را به همراه ایمیل خود نیز ارسال کنید، برای کسب اطلاعات بیشتر آموزشی مفصل در سایت وجود دارد، عبارت "ایمیل" را در قسمت جستجو وارد کنید.
نویسنده: hamed
زمان: ۱۰:۳۱:۲۹ - تاریخ: ۱۳۹۲/۰۶/۰۵
ببخشید یعنی اول در محیط مشکی رنگ نرم افزار mysql پایگاه داده رو بسازیم بعد با php به اون وصل شیم یا از طریق php هم میشه پایگاه داده رو طراحی کرد. تو محیط نرم افزار هم میشه تصاویر رو ذخیره کرد؟
پاسخ: 
چه از طریق کدنویسی و چه از طریق برنامه phpMyAdmin می توانید دیتابیس را مدیریت کنید، اما برای ساخت دیتابیس بهتر است به صورت دستی و در محیط برنامه phpMyAdmin این کار را انجام دهید، اما مسلما و در نهایت برنامه شما باید با کد از دیتابیس اطلاعات را دریافت یا در آن ذخیره کند، اما اگر موردی اقتضاء کند، همین کار را می توان از طریق نرم افزار نیز انجام داد.
در مورد ذخیره تصاویر، این کار به دلایل مختلف توصیه نمی شود، بهتر است صرفا اطلاعات متنی تصاویر (مانند نام فایل، حجم و...) را در دیتابیس ذخیره کنید و فایل اصلی را در هارددیسک سرور قرار دهید، با این حال ذخیره تصاویر در دیتابیس به صورت مستقیم با استفاده از نوع داده Blob امکانپذیر است.
نویسنده: amir
زمان: ۲۱:۴۹:۰۵ - تاریخ: ۱۳۹۲/۰۹/۰۹
میخوام پایگاه داده طراحی کنم محیط عملیاتی داروخانه چگونه با نرم افزار xampp کار کنم
پاسخ: 
کار با این برنامه خیلی سخت نیست، پس از نصب کافی است فایل ها را به دایرکتوری www منتقل و از طریق
http://localhost
به آنها دسترسی داشته باشید، پایگاه داده نیز در آدرس
http://localhost/phpmyadmin
در دسترس خواهد بود.
نویسنده: حمید
زمان: ۰۸:۵۱:۳۵ - تاریخ: ۱۳۹۲/۱۰/۰۱
با سلام
میشه یه مقدار درباره ی mysqli و مزایاش نسبت به mysql توضیح بدید و ایا توصیه می کنید از این روش استفاده بشه
پاسخ: 
در PHP برای ارتباط با پایگاه داده می توان از سه اکستنشن (برنامه اضافه شده به هسته مفسر) یا سه راه متفاوت استفاده کرد:
mysql (اکستنشن اولیه PHP) 
mysqli (نسخه بهبود یافته mysql)
PDO (PHP Data Object)
از آنجایی که mysql اکستنشن قدیمی PHP محسوب می شود و در آینده و به مرور حذف خواهد شد، توصیه می شود که حداقل برای برنامه های جدید از mysqli یا PDO استفاده شود، mysqli دو نوع برنامه نویسی عادی و شی گراء را پشتیبانی می کند، علاوه بر این تمام امکانات mysql را دارد + امنیت و راحتی بیشتر نسبت به mysql ، اکستنشن PDO نیز شیوه حرفه ای در این زمینه محسوب می شود که تنها از حالت شی گراء پشتیبانی می کند، syntax متفاوت تری نسب به mysql دارد و برخی امکانات mysqli در آن به صورت مستقیم وجود ندارد، مزیت PDO حداقل در تئوری نسبت به mysqli این است که امکان کار با چند نوع پایگاه داده را فراهم می کند.
نویسنده: hadis booshadi
زمان: ۱۳:۰۸:۲۰ - تاریخ: ۱۳۹۲/۱۰/۰۶
سلام
من در سایت بانک دارم که از mysql استفاده کردم. وقتی سایت رو اپلود کردم با خطای
Host 'static.88-198-206-49.clients.your-server.de' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'
مواجه شدم.میشه راهنماییم کنید.
ممکنه مشکل از connection string باشه؟
ممنون
پاسخ: 
این خطا ممکن است ناشی از دلایل زیر باشد:
- خطا در کدها به طور مثال نبستن ارتباط پس از برقراری آن، به فرض در اکستنشن mysql باید در انتها تابع close را فراخوانی کنیم.
- پائین بودن حداکثر تعداد خطا در تنظیمات MySQL (این مورد را یا باید از طریق افزودن دستور
max_connect_errors = 10000
به فایل my.ini در ریشه MySQL انجام دهید یا از طریق MySQL Console و تایپ دستور
mysql> SET GLOBAL max_connect_errors = 10000;
).
نکته: روش های بالا نیاز به داشتن سطح دسترسی ادمین سرور است.
نویسنده: محمدحسین
زمان: ۱۸:۵۴:۵۶ - تاریخ: ۱۳۹۲/۱۰/۱۲
من اصلا نتونستم واردش بشم!
باید برم تو PHPMyAdmin؟
اونجا یوزر و پس رو چی بزنم؟؟ :D
پاسخ: 
آدرس phpMyAdmin در سرور مجازی معمولا به صورت زیر است:
http://localhost/phpmyadmin
برای ورود (در صورت درخواست سیستم) در حالت پیش فرض از نام کاربری root و بدون کلمه عبور (فیلد را خالی بگذارید) استفاده کنید.
نویسنده: محمدحسین
زمان: ۱۵:۴۶:۲۴ - تاریخ: ۱۳۹۲/۱۰/۱۳
خیلی متشکرم واقعا اینا رو جایی نیاورده بود...!
نویسنده: سید عباس
زمان: ۲۳:۳۹:۳۰ - تاریخ: ۱۳۹۲/۱۱/۲۲
استاد خسته نباشید میخواستم بدونم آیا راهی هست با کدی از نوع php که به ما معرفی کنید تا از دیتابیس بکاپ تهیه کنید و دیگر وارد کنترل پنل نشویم؟
بسیار مچکر
پاسخ: 
آموزش گرفتن پشتیبان از دیتابیس با کدهای PHP خیلی مختصر نیست که بتوانیم در این قسمت آن را توضیح دهیم، نیاز به طرح در یک مطلب مجزا دارد! اما اگر کد را بدون آموزش بخواهید می توانید از تابع آماده زیر استفاده کنید (تست نشده):
<?php
backupTables('localhost', 'username', 'password', 'blog');

/* backup the db OR just a table */
function backupTables($host, $user, $pass, $db, $tables = '*'){
//connect
$conn = mysqli_connect($host, $user, $pass, $db);

//get all of the tables
if($tables == '*'){
$tables = array();
$result = mysqli_query($conn, 'SHOW TABLES');
while($row = mysqli_fetch_row($result)){
$tables[] = $row[0];
}
}
else{
$tables = is_array($tables) ? $tables : explode(',',$tables);
}

//cycle through
foreach($tables as $table){
$result = mysqli_query($conn, 'SELECT * FROM '.$table);
$num_fields = mysqli_num_rows($result);

$return.= 'DROP TABLE '.$table.';';
$row2 = mysqli_fetch_row(mysqli_query($conn, 'SHOW CREATE TABLE '.$table));
$return.= "\n\n".$row2[1].";\n\n";

for ($i = 0; $i < $num_fields; $i++){
while($row = mysqli_fetch_row($result)){
$return.= 'INSERT INTO '.$table.' VALUES(';
for($j=0; $j<$num_fields; $j++){
$row[$j] = addslashes($row[$j]);
$row[$j] = ereg_replace("\n","\\n",$row[$j]);
if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
if ($j<($num_fields-1)) { $return.= ','; }
}
$return.= ");\n";
}
}
$return.="\n\n\n";
}

//save file
$handle = fopen('db-backup-'.time().'-'.(md5(implode(',', $tables))).'.sql','w+');
fwrite($handle,$return);
fclose($handle);

//close
mysqli_close($conn);
}
?>
نویسنده: siyavash
زمان: ۱۸:۵۰:۱۲ - تاریخ: ۱۳۹۲/۱۱/۲۳
با سلام و عرض خسته نباشید :
من از یک سیستم مدیریت محتوای خیلی ساده استفاده می کنم و ازش راضی هستم .
میخواستم برای پست هام یه عکس بند انگشتی بزارم ولی هر کاری کردم نشد و اموزش درست و حسابی هم تو نت پیدا نکردم
میشه یه راهنمایی کنید
با تشکر
اینم تیبل پست تو دیتابیس هستش
CREATE TABLE `news` (
`id` INT NOT NULL AUTO_INCREMENT ,
`title` TEXT NOT NULL ,
`content` TEXT NOT NULL ,
`fullcontent` TEXT NOT NULL ,
`date` VARCHAR( 20 ) NOT NULL ,
PRIMARY KEY ( `id` )
) TYPE = MYISAM;
پاسخ: 
برای اینگونه موارد تقریبا هیچ آموزش خاصی پیدا نمی کنید، این نوع مشکلات به علت داشتن جزئیات زیاد تنها با بلد بودن برنامه نویسی به معنی کلی (یعنی کدنویسی PHP، کار با دیتابیس و...) قابل حل است، به طور مثال برای مشکل شما باید تصاویری در یک دایرکتوری داشته باشید و آدرس تصویر مربوط به هر مطلب در یک ستون دیتابیس (به فرض از نوع TEXT یا VARCHAR) ذخیره شود، سپس هنگام نمایش مطالب، آدرس تصویر مورد نظر و متناظر با آن از دیتابیس استخراج و با تگ img در قسمت src از دایرکتوری سرور فراخوانی می شود.
نویسنده: سید عباس
زمان: ۱۳:۲۰:۱۹ - تاریخ: ۱۳۹۲/۱۱/۲۴
استاد کدی که ارائه کردید 100 درصد توسط بنده تست شد و مشکلی نداشت فقط در قسمت
$return.= 'DROP TABLE '.$table.';';
اگر DROP TABLE بجای آن خالی بگذارید بهتراست چون در غیر این صورت موقع اپلود بکاپ در دیتابیس ارور میده.
فقط یه سوال من کدی دارم به شکل ذیل که محتویات پوشه رو نمایش میده میخوام بهش قابلیت حذف اضافه کنم باید چی کار کنم لطفا کمک کنید
<?php
function list_files($dir)
{
if(is_dir($dir))
{
if($handle = opendir($dir))
{
while(($file = readdir($handle)) !== false)
{
if($file != "." && $file != ".." && $file != "Thumbs.db")
{
echo '<a target="_blank" href="'.$dir.$file.'">'.$file.'</a><br>'."\n";
}
}
closedir($handle);
}
}
}

?>

<?php
list_files("bakup_db/");
?>
پاسخ: 
برای حذف فایل باید کار با تابع unlink در PHP را بلد باشید (در وب جستجو کنید).
نویسنده: سید عباس
زمان: ۱۴:۳۷:۱۰ - تاریخ: ۱۳۹۲/۱۱/۲۴
استاد متاسفانه با کدی که شما داده بودید بکاپ میسازه اما در ایمپورت دیتابیس ارور میده راستی من یه کد پی اچ پی در یک سایت انگلیسی زبان پیدا کردم که بسیار عالی جواب داد لطفا یک تستی کنید و لذت ببرید
<?php
$hostname_conn = "localhost";
$database_conn = "root";
$username_conn = "root";
$password_conn = "";
$connection=mysql_connect($hostname_conn,$username_conn,$password_conn);
$selectdb=mysql_select_db($database_conn) or die("Database could not be selected");
$result=mysql_select_db($database_conn)
or die("database cannot be selected <br>");

function backup_db(){
/* Store All Table name in an Array */
$allTables = array();
$result = mysql_query('SHOW TABLES');
while($row = mysql_fetch_row($result)){
$allTables[] = $row[0];
}
foreach($allTables as $table){
$result = mysql_query('SELECT * FROM '.$table);
$num_fields = mysql_num_fields($result);
$return.= 'DROP TABLE IF EXISTS '.$table.';';
$row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table));
$return.= "\n\n".$row2[1].";\n\n";
for ($i = 0; $i < $num_fields; $i++) {
while($row = mysql_fetch_row($result)){
$return.= 'INSERT INTO '.$table.' VALUES(';
for($j=0; $j<$num_fields; $j++){
$row[$j] = addslashes($row[$j]);
$row[$j] = str_replace("\n","\\n",$row[$j]);
if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; }
else { $return.= '""'; }
if ($j<($num_fields-1)) { $return.= ','; }
}
$return.= ");\n";
}
}
$return.="\n\n";
}

// Create Backup Folder
$folder = 'DB_Backup/';
if (!is_dir($folder))
mkdir($folder, 0777, true);
chmod($folder, 0777);

$date = date('m-d-Y-H-i-s', time());
$filename = $folder."db-backup-".$date;

$handle = fopen($filename.'.sql','w+');
fwrite($handle,$return);
fclose($handle);
}

// Call the function
backup_db();
?>
پاسخ: 
امکان تست به دلیل کمبود فرصت میسر نیست! ممنون از به اشتراک گذاری.
نکته: اکستنشن mysql قدیمی و در حال منسوخ شدن است، بهتر است از mysqli یا PDO استفاده کنید.
نویسنده: mav
زمان: ۱۸:۱۲:۱۲ - تاریخ: ۱۳۹۲/۱۱/۲۶
من در برنامه PHPmyadmin یک بانک اطلاعاتی را می سازم و سپس برای ایجاد جدول دو ستونه اقدام می کنم . لیکن وقتی وارد صفحه تعریف ستون های جدول می گردم با پیغام ذیل روبرو می گردم . لطفا مرا راهنمائی نمائید.
 Could not save recent table 
#1146 - Table 'phpmyadmin.pma_recent' doesn't exist
پاسخ: 
ظاهرا باگی در نسخه MySQL شما وجود دارد، این مشکل به راحتی قابل حل نیست و بسته به برنامه یا سرورتان راه حل های متفاوت دارد (باید اطلاعات بیشتری از برنامه یا سرورتان ارائه کنید تا بررسی شود).
paged صفحه 1 از 4
more لطفا پیش از ارسال یادداشت نکات زیر را مد نظر داشته باشید:
- مواردی که به کلی خارج از موضوع این مطلب هستند را در فرم منوی "تماس با ما" مطرح و پاسخ را از طریق ایمیل دریافت کنید.
- به سوالات کلی، مبهم، غیرضروری و مشکلاتی که تلاشی برای رفع آن نکرده باشید پاسخ خاصی داده نخواهد شد.
- کدها و اسکریپت های طولانی را ترجیحا در یک صفحه وب آنلاین قرار دهید تا امکان تست و بررسی وجود داشته باشد.
- تمام یادداشت ها بررسی و برای هر کاربر زمان مشخصی جهت پاسخگویی در نظر گرفته می شود، لذا از طرح سوالات متعدد در بازه زمانی کوتاه خودداری کنید.




2 × 8
 refresh
آگهی
سفارش آگهی تبلیغاتی
Webgoo.ir

هزینه منصفانه، بازخورد مناسب