در این مقاله، نحوه استفاده از PHP برای درج ردیف ها در پایگاه داده MySQL را بررسی خواهیم کرد.

مرحله 1 - ایجاد یک جدول

ابتدا باید یک جدول برای داده ها ایجاد کنید. این یک روش ساده است که می توان با آن انجام داد با استفاده از phpMyAdminدر کنترل پنل هاست

پس از ورود به phpMyAdmin یک رابط مانند زیر را مشاهده خواهید کرد:

بیایید با کلیک بر روی دکمه "ایجاد جدول" جدولی به نام Students در پایگاه داده u266072517_name ایجاد کنیم. پس از آن خواهیم دید صفحه جدید، که روی آن تمام پارامترهای جدول لازم را تنظیم می کنیم:

این ساده ترین راه اندازی است که می توان برای جدول و دریافت استفاده کرد اطلاعات اضافیدر مورد ساختار جداول/پایگاه های داده

گزینه های ستون:

  • Name نام ستونی است که در بالای جدول ظاهر می شود.
  • نوع، نوع ستون است. به عنوان مثال، ما varchar را انتخاب کردیم زیرا مقادیر رشته را وارد خواهیم کرد.
  • Length/Values ​​- برای تعیین حداکثر طولی که یک ورودی در این ستون می تواند داشته باشد استفاده می شود.
  • Index - برای فیلد ID از نمایه "Primary" استفاده کردیم. هنگام ایجاد جدول، توصیه می شود که تنها از یک ستون به عنوان کلید اصلی استفاده شود. برای فهرست کردن رکوردها در یک جدول استفاده می شود و هنگام تنظیم جدول مورد نیاز است. من همچنین "A_I" را علامت گذاری کردم که مخفف "Auto Increment" است - گزینه ای برای اختصاص خودکار تعداد رکوردها (1،2،3،4...).
    بر روی دکمه ذخیره کلیک کنید و جدول ایجاد می شود.

مرحله 2. نوشتن کد PHP برای درج داده ها در MySQL.

گزینه 1 - روش MySQLi

ابتدا باید با دیتابیس ارتباط برقرار کنید. پس از آن، از کوئری SQL INSERT استفاده می کنیم. نمونه کد کامل:

" . mysqli_error($conn); ) mysqli_close($conn); ?>

قسمت اول کد (خط 3 - 18) برای اتصال به پایگاه داده است.

بیایید با خط 19 شروع کنیم:

$sql = "INSERT INTO Students (نام، نام خانوادگی، ایمیل) VALUES ("Thom"، "Vial"، " [ایمیل محافظت شده]")";

او داده ها را وارد می کند پایگاه داده MySQL. INSERT INTO عبارتی است که داده ها را به جدول مشخص شده اضافه می کند. در مثال ما، داده ها به جدول Students اضافه می شوند.

سپس شمارش ستون هایی می آید که مقادیر در آن درج می شوند: نام، نام خانوادگی، ایمیل. داده ها به ترتیب مشخص شده اضافه می شوند. اگر نوشته بودیم (ایمیل، نام خانوادگی، نام)، مقادیر به ترتیب دیگری اضافه می شدند.

قسمت بعدی عبارت VALUES است. در اینجا مقادیر ستون ها را مشخص می کنیم: نام = Thom، نام خانوادگی = ویال، ایمیل = [ایمیل محافظت شده]

ما یک پرس و جو را با استفاده از کد PHP اجرا کرده ایم. AT کد برنامهپرس و جوهای SQL باید با نقل قول فرار کنند. قسمت بعدی کد (خط 20-22) بررسی می کند که آیا درخواست ما موفقیت آمیز بوده است:

if (mysqli_query($conn، $sql)) (پژوهش "رکورد جدید با موفقیت ایجاد شد"؛ )

این کد پیام موفقیت آمیز بودن درخواست را نشان می دهد.

و قسمت آخر (خط 22 - 24) در صورت عدم موفقیت درخواست، اعلان را نشان می دهد:

else ( echo "خطا: " . $sql. "
".mysqli_error($conn);)

گزینه 2 - روش شی داده PHP (PDO)

ابتدا باید با ایجاد یک شی PDO جدید به پایگاه داده متصل شویم. هنگام کار با آن، ما استفاده خواهیم کرد روش های مختلف PDO. متدهای شی به این صورت نامیده می شوند:

$the_Object->the_Method();

PDO به شما این امکان را می دهد که کد SQL را قبل از اجرا "آماده کنید". پرس و جوی SQL قبل از اجرا ارزیابی و "تصحیح" می شود. به عنوان مثال، ساده ترین حمله تزریق SQL را می توان با وارد کردن کد SQL در یک فیلد فرم انجام داد. مثلا:

از آنجایی که این SQL از نظر نحوی صحیح است، نقطه ویرگول DROP DATABASE user_table را یک پرسش SQL جدید می کند و جدول کاربر حذف می شود. عبارات آماده شده (متغیرهای محدود) اجازه نمی دهد که نقطه ویرگول ها و نقل قول ها به پرس و جو اصلی خاتمه دهند.بنابراین، دستور DROP DATABASE هرگز اجرا نخواهد شد.

برای استفاده از دستورات آماده شده، باید یک متغیر جدید بنویسید که متد ()prepar از شی پایگاه داده را فراخوانی کند.

کد صحیح:

getMessage(); ) // متغیرهایی را برای شخصی که می خواهیم به پایگاه داده اضافه کنیم تنظیم کنید $first_Name = "Thom"; $last_Name = "ویال"; $email = " [ایمیل محافظت شده]"؛ // یک متغیر ایجاد کنید که متد ()prepare را از شی پایگاه داده فراخوانی کند // کوئری SQL که می خواهید اجرا کنید به عنوان یک پارامتر وارد می شود و مکان نگهدارنده ها به این صورت نوشته می شوند: placeholder_name $my_Insert_Statement = $my_Db_Connection->prepare( "INSERT INTO Students (نام، نام خانوادگی، ایمیل) VALUES (:first_name، :last_name، :email)")؛ // اکنون به اسکریپت می گوییم که هر مکان نگهدار برای استفاده از متد ()bindParam به چه متغیری اشاره می کند // پارامتر اول مکان نگهدار در عبارت بالا است، دومی متغیری است که باید به $my_Insert_Statement->bindParam(:first_name, $first_Name)؛ $my_Insert_Statement->bindParam(:last_name, $last_Name)؛ $my_Insert_bindatement-> مراجعه کند. (:email, $email)؛ // پرس و جو را با استفاده از داده هایی که به تازگی تعریف کردیم اجرا کنید // متد execute() در صورت موفقیت آمیز بودن، TRUE و اگر نشد FALSE را برمی گرداند و به شما اجازه می دهد که پیام خود را چاپ کنید اگر ($my_Insert_Statement ->execute()) ( echo "New reco با موفقیت ایجاد شد"؛ ) else ( echo "Unable to createrecord"; ) // در این مرحله، می توانید داده های متغیر را تغییر دهید و یک پرس و جو برای افزودن داده های بیشتر به داده های پایگاه داده به پایگاه داده اجرا کنید $first_Name = "John"; $last_Name = "اسمیت"; $email = " [ایمیل محافظت شده]"; $my_Insert_Statement->execute(); // با تغییر متغیر اگر ($my_Insert_Statement->execute()) ( echo "Record جدید با موفقیت ایجاد شد"؛ ) else ( echo "Unable to createrecord";

در خطوط 28، 29 و 30 از متد ()bindParam شی پایگاه داده استفاده می کنیم. همچنین یک متد ()bindValue وجود دارد که با روش قبلی بسیار متفاوت است.

  • bindParam() - این متد زمانی که به متد execute() رسید، داده ها را ارزیابی می کند. اولین باری که اسکریپت به متد execute() می رسد، می بیند که $first_Name با "Thom" مطابقت دارد. سپس آن مقدار را متصل می کند و پرس و جو را اجرا می کند. وقتی اسکریپت به متد execute() دوم رسید، می بیند که $first_Name اکنون با "جان" مطابقت دارد. سپس این مقدار را متصل می کند و دوباره پرس و جو را با مقادیر جدید اجرا می کند. مهم است که به یاد داشته باشید که ما زمانی یک پرس و جو را تعریف کردیم و از آن با داده های مختلف در نقاط مختلف اسکریپت مجددا استفاده کردیم.
  • bindValue() - این روش داده ها را به محض رسیدن به bindValue() ارزیابی می کند. از آنجایی که $first_Name روی "Thom" تنظیم شده بود، وقتی به bindValue() رسید، هر بار که متد execute() در $my_Insert_Statement فراخوانی شود، استفاده خواهد شد.
    توجه داشته باشید که ما از متغیر $first_Name مجددا استفاده می کنیم و برای بار دوم مقدار جدیدی به آن اختصاص می دهیم. پس از اجرای اسکریپت، با وجود اینکه متغیر $first_Name در انتهای اسکریپت دارای مقدار "John" است، هر دو نام در پایگاه داده لیست می شوند. به یاد داشته باشید که PHP کل اسکریپت را قبل از اجرای آن بررسی می کند.

اگر اسکریپت را برای جایگزینی bindParam با bindValue به روز کنید، "Thom Vial" را دو بار در پایگاه داده وارد می کنید و جان اسمیت نادیده گرفته می شود.

مرحله 3 - تأیید موفقیت و حل مشکلات

اگر درخواست درج ردیف ها در پایگاه داده موفقیت آمیز بود، پیام زیر را مشاهده خواهیم کرد:

عیب یابی خطاهای رایج

MySQLi

در هر صورت پیغام خطا نمایش داده می شود. به عنوان مثال، بیایید یک خطای نحوی در کد ایجاد کنیم، و نتیجه زیر را دریافت می کنیم:

قسمت اول کد خوب است، اتصال با موفقیت برقرار شد، اما پرس و جوی SQL ناموفق بود.

"خطا: INSERT INTO Students (نام، نام خانوادگی، ایمیل) VALUES ("Thom"، "Vial"، " [ایمیل محافظت شده]") شما در نحو SQL خود خطایی دارید؛ کتابچه راهنمای مربوط به نسخه سرور MySQL شما را برای استفاده از دستورات حقوقی در نزدیکی "(نام، نام خانوادگی، ایمیل) VALUES ("Thom"، "Vial"، "بررسی کنید. [ایمیل محافظت شده]")" در خط 1"

یک خطای نحوی وجود داشت که باعث از کار افتادن اسکریپت شد. خطا اینجا بود:

$sql = "INSERT INTO Students (نام، نام خانوادگی، ایمیل) VALUES ("Thom"، "Vial"، " [ایمیل محافظت شده]")";

ما از بریس های فرفری به جای بریس های معمولی استفاده کردیم. این اشتباه است و اسکریپت یک خطای نحوی داده است.

PDO

در خط 7 اتصال PDO، حالت خطا روی "نمایش همه استثناها" تنظیم شده است. اگر مقدار دیگری تنظیم می شد و درخواست ناموفق بود، هیچ پیام خطایی دریافت نمی کردیم.

این تنظیم فقط باید هنگام توسعه یک اسکریپت استفاده شود. هنگامی که فعال است، نام پایگاه داده و جدول ممکن است نمایش داده شود، که به دلایل امنیتی بهتر است پنهان نگه داشته شوند. در موردی که در بالا توضیح داده شد، هنگامی که از براکت های فرفری به جای براکت های معمولی استفاده می شد، پیام خطا به این صورت است:

خطای مهلک: Uncaughtexception "PDOException" با پیام "SQLSTATE: خطای نحوی یا نقض دسترسی: 1064 شما یک خطا در نحو SQL خود دارید. کتابچه راهنمای مربوط به نسخه سرور MySQL شما را بررسی کنید تا از دستورات حقوقی در نزدیکی "(نام، نام خانوادگی، ایمیل) VALUES ("Thom"، "Vial"، "استفاده کنید. [ایمیل محافظت شده]")" در خط 1"

سایر مشکلات احتمالی:

  • ستون‌ها به اشتباه مشخص شده‌اند (ستون‌هایی که وجود ندارند یا یک اشتباه املایی در نام آنها وجود دارد).
  • یک نوع مقدار به ستونی از نوع دیگر اختصاص داده می شود. به عنوان مثال، اگر بخواهید عدد 47 را در ستون Name درج کنید، با خطا مواجه می شوید. این ستون باید از یک مقدار رشته استفاده کند. اما اگر عددی را در گیومه ها مشخص کنیم (مثلاً "47") کار می کند، زیرا یک رشته است.
  • تلاش برای وارد کردن داده ها در جدولی که وجود ندارد انجام شد. و همچنین یک اشتباه املایی در نام جدول.

پس از وارد کردن موفقیت آمیز داده ها، مشاهده خواهیم کرد که آنها به پایگاه داده اضافه شده اند. در زیر نمونه ای از جدولی است که داده ها در آن اضافه شده است.

از نویسنده:اوه، شما نمی توانید کلمات را از یک آهنگ بیرون بیاورید! اما آنها می توانند توسط دیگران حذف، به روز یا درج شوند. نکته اصلی این است که کلمات وارد پایگاه داده می شوند. امروز به شما خواهیم گفت که چگونه داده ها در MySQL نوشته می شوند و چگونه آن را به درستی انجام دهید تا آهنگ به صدا درآید!

افزودن ورودی ها با phpMyAdmin

پوسته phpMyAdmin برای مدیریت MySQL DBMS یک عملکرد "سبک" را برای افزودن رکوردهای جدید به جداول پایگاه داده پیاده سازی می کند. به دلیل سادگی آن، هم برای "دومیت ها" سبز و هم برای حرفه ای های "تنبل" ایده آل است.

برای وارد کردن اطلاعات جدید در جدول، باید با حقوق مدیر وارد برنامه شوید. سپس در لیست های سمت چپ پایگاه داده و جدول مورد نظر را انتخاب کنید. سپس در منوی بالا از طریق آیتم "درج" بروید.

پس از آن، برای ایجاد یک رکورد در پایگاه داده MySQL، پنجره بعدی را برای تمام ستون های فیلد "Value" پر کنید و در پایین روی "OK" کلیک کنید.

تصویر بالا نشان می دهد که جدول اصلاح شده "حیوانات" از دو ستون (فیلد) تشکیل شده است: شناسه و نام. بخش دوم نوع هر یک از ستون ها را مشخص می کند. فقط باید مقداری برای فیلد نام وارد کنیم، زیرا ستون id کلید اصلی است و هنگام ایجاد جدول روی افزایش خودکار تنظیم شده است. این بدان معنی است که مقدار فیلد id به طور خودکار توسط MySQL تولید می شود و 1 را به مقدار صحیح قبلی اضافه می کند.

برای اینکه بفهمید کدام فیلد از رکوردهای داده در MySQL کلید اصلی (کلید اصلی) است، در phpMyAdmin، به منو (با جدول انتخاب شده در سمت چپ در لیست) به تب منوی بالا "Structure" بروید. در اینجا تمام فیلدهای جدول، نوع آنها و ویژگی های اضافی توضیح داده شده است.

درج داده ها با استفاده از پرس و جوهای SQL

اما phpMyAdmin فقط یک بسته بندی است و مدیران واقعی با استفاده از زبان پرس و جو ساخت یافته با سرور MySQL "گفتگو" می کنند. یعنی آنها با او به زبان SQL "صحبت می کنند". از آنجایی که ما در تلاش هستیم تا حرفه ای واقعی شویم، کمی به مطالعه دستورات SQL در چارچوب موضوع مورد بررسی می پردازیم. در اینجا یک پرس و جو وجود دارد که با وارد کردن آن در قسمت "SQL"، همان پایگاه داده را ایجاد می کنید:

CREATE TABLE Animal (id MEDIUMINT NOT NULL AUTO_INCREMENT، نام CHAR(30) NOT NULL، PRIMARY KEY (id));

CREATE TABLE Animal (ID MEDIUMINT NOT NULL AUTO_INCREMENT،

نام CHAR (30 ) NOT NULL , PRIMARY KEY (id ) ) ;

پس از ایجاد جدول و نوشتن داده ها در پایگاه داده MySQL (از طریق تب "Insert")، برنامه به شما اطلاع می دهد که یک خط با مقدار شناسه 1 به حیوانات اضافه شده است و کمی پایین تر در پنجره ویرایشگر، کد پرس و جو نمایش داده می شود که پوسته آن را برای ما ایجاد کرده و به سرور پایگاه داده ارسال می کند.

کد درخواست:

INSERT INTO `my_db1`.`animal` (`id`, `name`) VALUES (NULL، "Cat");

در «my_db1» درج کنید. ` حیوان` (` id` , ` name` ) VALUES (NULL , "Cat" ) ;

بیایید آن را با جزئیات بیشتر مطالعه کنیم. SQL از دستور INSERT برای درج یک ردیف جدید در جدول استفاده می کند. به سرور می گوید که در جدول پایگاه داده (my_db1 . animal) باید مقادیر مشخص شده را در فیلدهای شناسه و نام وارد کنید (VALUES (NULL، 'Cat').

لطفاً توجه داشته باشید که ما یک مقدار عددی برای ستون id مشخص نمی‌کنیم، بلکه NULL را تعیین می‌کنیم، زیرا تکمیل خودکار (افزایش خودکار) را برای این فیلد فعال کرده‌ایم.

نحوه درج پست با استفاده از PHP

هر چیزی که ما در نظر گرفتیم فقط یک "پیش درآمدی" برای عمل اصلی است که در آن "حضرت" زبان برنامه نویسی سمت سرور PHP وارد صحنه می شود. به لطف او است که MySQL به عنوان یک DBMS در وب بسیار گسترده شده است.
بخش بزرگی از وب جهانی بر روی دسته ای از این دو فناوری اینترنتی ساخته شده است. به هر کجا که نگاه کنید، آنها را در همه جا خواهید یافت: در CMS مدرن، موتورهای "خود نوشته" و روی سرور.

جای تعجب نیست که PHP توابع داخلی زیادی برای نوشتن داده ها در MySQL فراهم می کند. اما ما به مهمترین آنها خواهیم پرداخت. در اینجا کدی وجود دارد که یک "حیوان" جدید به جدول حیوانات اضافه می کند. اگر سخت تلاش کنید، از این طریق می توانید کل باغچه را جمع آوری کنید :)

$con_str=mysql_connect("localhost"، "root"، ""، "db1"); if(mysql_connect("localhost","root"))( echo "Hello!!"; ) mysql_select_db("db1",$con_str); $query_str="InSERT INTO `db1`.`animal` (`id`, `name`) VALUES (NULL، "سگ")"; mysql_query ($query_str); mysql_close();

$ con_str = mysql_connect ("localhost" , "root" , "" , "db1" );

if (mysql_connect("localhost" , "root" ) ) (

پژواک "سلام!!" ;

mysql_select_db("db1"، $con_str);

$query_str= "INSERT INTO "db1". "animal" ("id"، "name") VALUES (NULL، "سگ")";

mysql_query ($query_str) ;

mysql_close();

این کد باید در یک فایل PHP جایگذاری شود و در سمت سرور میزبانی شود.

با استفاده از تابع mysql_connect() به سرور پایگاه داده MySQL متصل می شویم. به عنوان آرگومان، تابع میزبان، نام کاربری DBMS، رمز عبور و نام پایگاه داده را برای اتصال به آن می گیرد. ما یک رمز عبور خالی داریم زیرا از یک سرور نصب شده بر روی ماشین محلی (مشتری) استفاده می کنیم.

برای نشان دادن تمام نمونه‌های توصیف شده نوشتن در پایگاه داده MySQL با استفاده از PHP، از "کیت جنتلمن" از دنور استفاده کردیم. این شامل یک سرور آپاچی محلی، یک سرور MySQL، phpMyAdmin و چند ابزار مفید دیگر برای کدنویسی و تست است.

سپس در بلوک if منطقی، اتصال به سرور پایگاه داده را بررسی کردیم. پس از آن در تابع mysql_select_db () پایه ای را که به آن متصل خواهیم شد تعیین کردیم. با استفاده از تابع ()mysql_query، کوئری SQL نوشته شده روی متغیر $query_str را راه اندازی کردیم. و در پایان اتصال برقرار شده بسته شد (تابع mysql_close()). حال، اگر به باغ خانه (حیوان سفره) خود نگاه کنیم، یک "حیوان خانگی" جدید در آنجا پیدا خواهیم کرد.

برای نوشتن آن در MySQL، PHP "با مهربانی" تمام مجموعه توابع لازم را ارائه کرد. نکته اصلی که مبتدیان در هنگام استفاده از SQL در کد برنامه "سوخته" می شوند، املای نادرست پرس و جوها، نقض نحو و جایگزینی کاراکترها برای فرار (نقل قول) است.

برای جلوگیری از ظاهر شدن موهای خاکستری اضافی روی سر، بهتر است با استفاده از phpMyAdmin املای صحیح درخواست را بررسی کنید. برای این کار کد SQL را در ویرایشگر برنامه قرار داده و آن را برای اجرا اجرا کنید. اگر چیزی اشتباه باشد، برنامه شروع به "قسم خوردن" می کند، یک پیام قرمز نمایش می دهد و محل خطا را نشان می دهد.

همانطور که می بینید، با کمک MySQL، می توانید باغ خانه خود را "جمع آوری" کنید و کلمات هر "آهنگ" را به درستی تغییر دهید. و برای نوشتن در پایگاه داده MySQL، PHP عالی است، بنابراین ما به شما توصیه می کنیم با این زبان برنامه نویسی "بزرگ" دوستی "نزدیک" داشته باشید!

و داده می شوند
. و اکنون در مورد چگونگی صحبت خواهیم کرد اضافه کردن تصاویر به پایگاه داده MySQL از طریق فرم با استفاده از PHP.

ایجاد یک فیلد در پایگاه داده MySQL برای افزودن تصویر

برای شروع، می خواهم بگویم که ذخیره تصاویر در پایگاه داده MySQLلازم است یکی از فیلدهای جدول برگرفته از نوع BLOB تعریف شود.

مخفف BLOB مخفف Binary Large Object است. نوع ذخیره سازی داده BLOB چندین گزینه دارد:

  • TINYBLOB - می تواند تا 255 بایت را ذخیره کند
  • BLOB می تواند تا 64 کیلوبایت اطلاعات را ذخیره کند
  • MEDIUMBLOB - تا 16 مگابایت
  • LONGBLOB تا 4 گیگابایت

برای ذخیره فایل تصویر در پایگاه دادهشما باید فایل را در یک متغیر بخوانید و یک کوئری برای اضافه کردن داده به جدول ایجاد کنید.

آماده سازی فرمی در صفحه برای افزودن تصویر به پایگاه داده MySQL

در مورد من وظیفه این بود اضافه کردن دو تصویر به پایگاه داده از طریق فرم با استفاده از PHP. ما یک فرم با دو فیلد و یک دکمه ارسال داریم:

form name = "form1" روش = "post" action="add_image.php"
enctype="multipart/form-data"

به یاد بیاورید که ویژگی عملفایلی را مشخص می کند که فایل های تصویری را بارگذاری می کند. صفت تایپ کردننحوه کدگذاری محتوای فرم و اطلاعات مربوط به آپلود فایل را مشخص می کند. نحوه پر کردن صحیح ویژگی را ببینید تایپ کردنبرای جلوگیری .

توجه داشته باشید:پشتیبانی از آپلود چند فایل در نسخه 3.0.10 معرفی شد.

نوشتن کد PHP برای ذخیره تصویر در پایگاه داده MySQL

از آنجایی که ما در حال ارسال دو فایل در ویژگی هستیم نامبعد از کلمه، "userfile" را با براکت نشان می دهیم، با این کار مشخص می کنیم که چندین فایل را با استفاده از آرایه ای که حاوی ویژگی های فایل است ارسال می کنیم:

$_FILES['userfile']['name']

نام فایل اصلی در دستگاه مشتری.

$_FILES['userfile']['type']

نوع mime فایل، اگر مرورگر این اطلاعات را ارائه کرده باشد.
مثال: "تصویر/گیف".

$_FILES['userfile']['size']

$_FILES['userfile']['tmp_name']

نام فایل موقت که تحت آن فایل آپلود شده در سرور ذخیره شده است.

چگونه مقادیر هر فایل را بدست آوریم؟

برای مثال، فرض کنید فایل هایی با نام های /home/test/1.jpg و /home/test/2.jpg ارسال می شوند.

در این مورد $_FILES['userfile']['name']
حاوی مقدار 1.jpg،
و $_FILES['userfile']['name']
- مقدار 2.jpg

به طور مشابه، $_FILES ['userfile']['size'] حاوی مقدار اندازه فایل 1.jpg و غیره خواهد بود. حالا کد فایل add_image.php را که در ویژگی form مشخص شده بود در نظر بگیرید عمل.

1024*1024||$image_size==0) ( $ErrorDescription="هر تصویر نباید بیش از 1 مگابایت باشد! تصویر را نمی توان به پایگاه داده اضافه کرد."; return ""; ) // اگر فایل رسیده است، بررسی کنید که آیا گرافیک // it (به دلایل امنیتی) if(substr($_FILES["userfile"]["type"][$num], 0, 5)=="image") (//محتوای فایل را بخوانید $image=file_get_contents($_FILES ["userfile"]["tmp_name"][$num]); //Escape از نویسه های خاص در محتوای فایل $image=mysql_escape_string($image); return $image; )else( ErrorDescription=" شما تصویری را آپلود نکردید، بنابراین نمی توان آن را اضافه کرد."; return ""; ) )else( $ErrorDescription="شما تصویری را آپلود نکردید، فیلد خالی است، بنابراین فایل نمی تواند به پایگاه داده اضافه شود. "; return ; ) return $image; )؟>

بنابراین، در این مقاله، در مورد نحوه ذخیره یک تصویر در پایگاه داده MySQL صحبت کردیم. , با استفاده از PHP

آخرین به روز رسانی: 1.11.2015

برای افزودن داده، از عبارت "INSERT" استفاده می شود:

$query="INSERT INTO goods VALUES(NULL, " سامسونگ گلکسی III", "Samsumg")"؛

دستور "INSERT" یک ردیف را در جدول وارد می کند. بعد از کلمه کلیدی INTO نام جدول را مشخص می کند و بعد از VALUES مجموعه مقادیر برای همه ستون ها در داخل پرانتز مشخص می شود. از آنجایی که ما سه ستون در جدول داریم، سه مقدار را مشخص می کنیم.

از آنجایی که در مبحث قبل هنگام ایجاد جدول ترتیب ستون زیر را مشخص کردیم: id, name, company, در این حالت برای ستون id NULL و برای نام "Samsung Galaxy III" و برای شرکت "Samsumg" ارسال می شود. .

از آنجایی که ستون id به صورت AUTO_INCREMENT تعریف شده است، لازم نیست مقدار عددی خاصی برای آن تعیین کنیم و می توانیم یک مقدار NULL ارسال کنیم و MySQL مقدار موجود بعدی را به ستون اختصاص می دهد.

حالا بیایید با استفاده از یک مثال به اضافه کردن داده ها نگاه کنیم. بیایید یک فایل ایجاد کنیم create.phpبا محتوای زیر:

داده ها اضافه شد"; ) // بستن اتصال mysqli_close($link); ) ?>

اضافه کردن مدل جدید

مدل را وارد کنید:

سازنده:

در اینجا، کد تعامل با پایگاه داده با عملکرد فرم ها ترکیب می شود: با استفاده از فرم، داده هایی را وارد می کنیم تا به پایگاه داده اضافه شوند.

امنیت و MySQL

در اینجا ما از تابع mysqli_real_escape_string() استفاده کرده ایم. این برای فرار از کاراکترها در یک رشته است که سپس در یک پرس و جوی SQL استفاده می شود. به عنوان پارامتر یک شی اتصال و یک رشته را می گیرد که باید از آن فرار کرد.

بنابراین، ما در واقع دو بار از کاراکتر escape استفاده می کنیم: ابتدا برای عبارت sql با استفاده از تابع mysqli_real_escape_string() و سپس برای html با استفاده از تابع htmlentities(). این به ما این امکان را می دهد که از خود در برابر دو نوع حمله به طور همزمان محافظت کنیم: حملات XSS و تزریق SQL.

نظرات از وبلاگ منتقل شدند

سرگئی
1395/09/14 ساعت 01:25
عصر بخیر!
علاقه مند به این سوال: ساده ترین راه برای سازماندهی ذخیره سازی داده ها و تنظیمات برنامه بدون استفاده از پایگاه داده چیست؟ نمی خواهید به MySQL یا Access گره بخورید..

مدیر
1395/09/14 ساعت 22:14
سلام!

ویژگی ها. تنظیمات
App.Config
فایل XML
سریال سازی
سعی کنید یکی از این موارد را از لیست انتخاب کنید.

نیکولای
1395/09/16 ساعت 02:28
سلام، چگونه می توانم ردیف برجسته شده در dataGridVIew را از dataGridVIew و phpMyAdmin حذف کنم.

PhpMyAdmin؟ این فقط یک پوسته برای کار با پایگاه داده است، می توانید توضیح دهید؟

نیکولای
1395/09/18 ساعت 02:24
لازم است ردیف انتخاب شده از DataGridView و از پایگاه داده حذف شود.

مدیر
1395/09/19 ساعت 07:00
نحوه حذف یک ردیف در پایگاه داده داده های mysqlیک مقاله اضافه کرد

نیکولای
1395/09/20 ساعت 09:20
خیلی ممنون.

DIMA
2016/09/20 ساعت 10:24
سلام میشه این روشبرای پیاده سازی نه از طریق DataGridView، بلکه از طریق ComboBox؟ اگر چنین است، چگونه؟ متشکرم.

مدیر
1395/09/22 در 03:21
سلام. مثال:

جنادی
1395/09/22 ساعت 18:25
چرا باید چنین متنی را به پایگاه داده System.Windows.Forms.TextBox، Text: ge اضافه کنم

ضمنا این (ge) در انتها توسط ژن نوشته شده است با وجود اینکه متن در تنظیمات جدول مشخص شده است کلمه ژن باید بیشتر جا می گرفت من این جدول را در برنامه ام نمایش می دهم و معلوم می شود که این همه متن غیر ضروری را برای من نمایش می دهد

مدیر
1395/09/24 ساعت 04:17
به احتمال زیاد کوئری SQL اشتباه نوشته شده است، به عنوان مثال:

در textBox1 نام را وارد می کنیم: Gene.

پرس و جوی Sql: "درج مقادیر نام جدول (TextBox1, ..)"؛ نتیجه: System.Windows.Forms.TextBox

و باید بنویسید: "Insert into table name names(textBox1.Text, ..)";
نتیجه: گنا

جنادی
1395/09/24 ساعت 18:41
همان طوری است که میبینی. با تشکر

سرگئی
1395/09/25 ساعت 11:51
سلام. و چگونه می توان افزودن به پایگاه داده از طریق textBox را پیاده سازی کرد؟

مدیر
1395/09/26 ساعت 20:53
همه چیز در اصل یکسان است. به عنوان مثال، بیایید جدیدترین مثال را در نظر بگیریم، نیاز دارد:

//پارامترها را ایجاد کنید و آنها را به مجموعه اضافه کنید cmd.Parameters.AddWithValue("@Name", textBox1.Text); cmd.Parameters.AddWithValue("@LastName", textBox2.Text);

اکنون پارامترهای: Name و LastName مقادیر وارد شده در جعبه متن را دریافت کرده و به پایگاه داده ارسال می کنند.

LINARA
1395/09/27 ساعت 17:45
سلام، ردیف هایلایت شده در dataGridVIew و phpMyAdmin چگونه است؟

مدیر
2016/09/29 در 02:06
من نمی دانم چگونه می توان یک ردیف را در phpMyAdmin انتخاب کرد. و برای مثال در dataGridView، این کار را می توان با استفاده از رویداد SelectionChanged انجام داد.

PSH
1395/09/30 ساعت 03:48
2لینارا:
اگر واقعاً می‌خواهید ردیف‌ها را ویرایش کنید، از یک ابزار HediSQL استفاده کنید، ردیف‌ها را تغییر دهید و تغییر دهید.

2 مدیر
روز خوب! با تشکر از مواد - همه چیز بسیار سرد بیان شده است)
سوال: من داده ها را با درخواست زیر اضافه می کنم (این یک آزمایش است):

String sql = "INSERT INTO کاربران ('FIO', 'Tour', 'Count', 'Cost', 'Date', 'Pasport', 'Birth') VALUES ("Kolyan"، "Moscow"، "1+1" "، 1100، "2011-11-11"، "1111 1111"، "11/9/1900")؛"؛

داده ها کاملاً اوکی وارد می شوند، اما در پایگاه داده (mysql) به جای سیریلیک "????" می شوند.

استودیوی تصویریمی گوید که System.String یک دنباله یونیکد است.

همچنین امتحان شد:

ALTER DATABASE `test` COLLATE "koi8r_general_ci"; ALTER TABLE `users` COLLATE="koi8r_general_ci"; ALTER DATABASE `test` COLLATE "utf8_unicode_ci"; ALTER TABLE `users` COLLATE="utf8_unicode_ci";

ولی کمکی نمیکنه..
چه اشکالی می تواند داشته باشد؟ کدگذاری های مختلف VS و DB؟ یا چی؟
می تواند آنچه را که خوانده شود / تغییر دهد ارسال کند.
با تشکر

مدیر
01.10.2016 در 09:49
سلام.

در DB (و در جدول) ترکیب utf_general_ci

آیا چنین مقایسه ای وجود دارد؟ شاید utf8_general_ci؟

معمولاً با انتخاب مقایسه utf8_general_ci یک پایگاه داده Mysql ایجاد می کنند، بنابراین هیچ مشکلی با الفبای سیریلیک وجود ندارد، مگر اینکه البته سرور باگ هایی را از مشتری دریافت نمی کند.

COLLATION برای مقایسه استفاده می شود، اما در این مورد، رمزگذاری (مجموعه نویسه ها) مهم است. بنابراین، ابتدا باید مطمئن شوید که به درستی روی سرور تنظیم شده است، به عنوان مثال، در utf8، نه latin1.

هنگام اتصال از طریق کانکتور .net (به طور پیش فرض)، از latin1 استفاده می شود، بنابراین گاهی اوقات باید به صراحت رمزگذاری utf8 را در رشته اتصال مشخص کنید:

MySqlConnection mycon; mycon = new MySqlConnection("server=127.0.0.1;uid=vasya;pwd=123;database=test;Charset=utf8;"); //MySqlConnectionStringBuilder: mysqlCSB.CharacterSet = "utf8";

PSH
2016/01/10 در 11:34
حق با شماست، خودتان را توصیف کردید، utf8_general_ci!
بله کمک کرد، ;Charset=utf8;
بسیار از شما متشکرم!

سرگیوس
2016/02/10 در 11:02
ممنون از مثال کاری سوال
من یک فیلد متنی ایجاد کرده ام که در آن می خواهم آدرس IP پایگاه داده را وارد کنم، اما نمی دانم چگونه این داده را در اینجا جایگزین کنم.

String conStr = " [ایمیل محافظت شده];user=test;" +
"پایگاه داده=تست;گذرواژه=تست;";
لطفاً به من بگویید چگونه داده ها را از فیلدهای متنی در فرم ویندوز در این طرح وارد کنم….

مدیر
2016/03/10 ساعت 11:50
"[ایمیل محافظت شده];کاربر=...
به طور کلی بهتر است مانند این مقاله به جای چنین رشته ای از ویژگی ها یا متد ()String.Format استفاده شود.

OLGA2203
1396/05/15 ساعت 20:14

String Connect = "Server=127.0.0.1;Port=3306;Database=base;Data Source=localhost;user=root;"; MySqlConnection con = جدید MySqlConnection(Connect); con.Open(); //ارتباط با پایگاه داده برقرار کنید. MySqlCommand cmd = جدید MySqlCommand(); cmd.CommandText = @”INSERT INTO tovar(ID، دسته، نام، علامت تجاری، قیمت، عکس، اندازه، رنگ، مواد، تعداد) مقادیر (@pr، @Category، @Name، @TradeMark، @Price، @Photo، @Size، @Color، @Material، @Count)"؛ cmd.Parameters.AddWithValue("@pr",counter); cmd.Parameters.AddWithValue("@Category", comboBox1.SelectedItem.ToString()); cmd.Parameters.AddWithValue("@Name", textBox1.Text); cmd.Parameters.AddWithValue("@TradeMark", textBox2.Text); cmd.Parameters.AddWithValue("@Price"، Convert.ToInt32(textBox4.Text)); cmd.Parameters.AddWithValue("@Photo", textBox3.Text); cmd.Parameters.AddWithValue("@Size", textBox6.Text); cmd.Parameters.AddWithValue("@Color", textBox5.Text); cmd.Parameters.AddWithValue("@Material", textBox8.Text); cmd.Parameters.AddWithValue("@Count", Convert.ToInt32(textBox7.Text)); cmd.Connection = con; cmd.ExecuteNonQuery(); MessageBox.Show("افزودن موفقیت آمیز"، "افزودن موفقیت آمیز"، MessageBoxButtons.OK، MessageBoxIcon.Asterisk);

خطای "ستون "ID" نمی تواند تهی باشد" پرتاب می شود، من اضافه شده به ستون ID را حذف می کنم - همان مورد در مورد ستون بعدی و غیره نوشته شده است.
اگر مقدار ثابتی را در پرانتز در VALUES وارد کنم، خط به پایه اضافه می شود.
لطفا به من بگویید مشکل چیست؟ من باید دقیقاً داده ها و مقادیر وارد شده از طریق فرم را در پایگاه داده بنویسم