دوره مجازی PHP (جلسه 17): اتصال به پایگاه داده از طریق PHP و 3 رابط mysql,mysqli و pdo



visibility  
mode_comment   ۸۷

با توجه به اهمیت پایگاه داده این جلسه رو به تشریح کامل نحوه ی اتصال به پایگاه داده از طریق کدهای PHP پرداختیم . در این جلسه 3 رابط mysql , mysqli و pdo را برای اتصال به پایگاه داده ی MySQL معرفی کرده و توضیحات لازم در مورد آنها را ارائه می دهیم .

مطالب ارائه شده در این جلسه عبارتند از :

اتصال به پایگاه داده ی MySQL از طریق PHP

  • روش هاي اتصال به پايگاه داده از طريق PHP با رابط های mysqli, mysql  و PDO
  • آشنایی کلی با رابط MySQL
  • تشریح نحوه اتصال به پایگاه داده از طریق رابط MySQL
  • عدم استفاده از رابط MySQL به خاطر منسوخ شدن آن از ورژن 5.5 php به بعد
  • آشنایی کلی با رابط MySQLi
  • تشریح نحوه اتصال به پایگاه داده از طریق رابط MySQLi
  • آشنایی کلی با رابط PDO
  • تشریح نحوه اتصال به پایگاه داده از طریق رابط PDO
  • اجراي کوئري هاي دلخواه بر روي ديتابيس از طريق PHP و رابط MySQLi
  • ميني پروژه : ایجاد صفحه ای برای اجرای بیش از 20 کوئری مختلف SQL بر روی پایگاه داده با شیوه ای جالب
  • تمرين
history تاخیر برای کیفیت :

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

info توجه

این مطلب یک جلسه از اموزش php حرفه ای می باشد و برای مشاهده آن باید در دوره ثبت نام کنید.

ثبت نام در اموزش php حرفه ای

comment دیدگاه کاربران
na3r replyپاسخ

مینی پروژه خیلی زیبا طراحی شده بود … ممنون.

ertebat ertebat replyپاسخ

سلام خسته نباشید مهندس آوند
مهندس ظاهرا توی فایلهای این جلسه پوشه common رو نذاشتید درسته؟

لقمان آوند

فراموش کرده بودم
ممنون، تصحیح شد .
مجددا دانلود بفرمایید .

بردیا راستین replyپاسخ

اینکه تصمیم گرفتید مینی پروژه رو عوض کنید واقعا عالی بود یعنی یه عالی میگم 100 تا عالی از بغلش میزنه بیرون من یه سری چیزی واقعا درکش برام سخت بود ولی با این مینی پروژه خیلی ساده و راحت دو هزاریم افتاد واقعا یه سورپرایز بود دستتون درد نکنه خسته نباشید.

لقمان آوند

خواهش می کنم
تاخیر های اندکی که در انتشار مطالب وجود داره برای همین موارد و طراحی بهتر روش تدریس هست .
از اینکه راضی میبینم شما رو خوشحالم
در جلسات آینده هم چنین تغیراتی رو خواهیم داشت .

بردیا راستین

استاد لطفا جی میلتون رو چک کنید . مرسی

vahid Sadeghian replyپاسخ

سلام استاد وقت بخیر من امشب ثبت نام کردم ولی جلسه 17 رو واسم نشون داده چرا؟
میگه قسط دوم؟ من قسطی ثبت نام نکردم که!

لقمان آوند

سلام
تصحیح شد .
مجددا بررسی بفرمایید .

nasrin replyپاسخ

سلام چرا روی این تابع خطا میدهmysql_real_escape_string

لقمان آوند

چه خطایی میده .
لطفا هر وقت سوالی دارید که خطایی در کدهاتون پیش اومده اون خطا رو هم در متن سوالتون بیارید که مشکل رو بتونیم بررسی کنیم و دلیلش رو به شما بگیم.

nasrin

Deprecated:mysql_real_escape_string(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead

لقمان آوند

همون طور که تو ویدیوها گفتم رابط mysql و توابع اون منسوخ شدن و باید به جاشون از mysqli استفاده کنید . به جای تابع مذکور از mysqli_real_escape_string استفاده کنید .

hoseyn replyپاسخ

سلام استاد من هر کاری کردم نتونستم با prepare دیتابیس کار کنم…
کد رو بصورت زیر نوشتم بعد از خیلی گشتن تو اینترنت …


هنگام اجرا کردن با اررور زیر میخورم
Fatal error: Call to undefined method mysqli::bind_param() in C:\Program Files (x86)\xampp\htdocs\DataBase Conect\mysqli_prepare.php on line 33

لقمان آوند

سلام
متد bind_param مال کلاس mysqli نیست عزیز و مربوط به کلاس mysqli_stmt میشه . یعنی اون شیئی که متد prepare به شما بر می گردونه .
مثال های موجود در این صفحه رو ببین .
وقتی به اینجور ارور ها می خورید به صفحه این تابع/متد در وبسایت رسمی php برید . اونجا مثال نحوه استفاده زیاد زده شده .

امین کاظمی replyپاسخ

استاد من با این fetch مشکل دارم. وقتی کدها رو وارد میکنم ی همچین اروری میده:
Call to a member function fetch_all() on a non-object in C:\wamp\www\my_p\17\mysqli.php on line 15

لقمان آوند

سلام
کدت رو هم بزار که ببینم.

امین کاظمی replyپاسخ

سلام استاد مشکل حل شد. اسم جدول رو اشتباه نوشته بودم

لقمان آوند

خوب خداروشکر
موفق باشی

امین کاظمی replyپاسخ

استاد کدها رو که می نویسم اجرا میشه ولی همیشه یه ارور میده که توی فایل common از یک دستور منسوخ شده mysql استفاده شده. چیکارش کنم؟

Deprecated: mysql_real_escape_string(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in C:\wamp\www\my_p\17\common\common.php on line 165

لقمان آوند

سلام
در خط 165 به جای mysql_real_escape_string از mysqli_real_escape_string استفاده کن.

امین کاظمی replyپاسخ

استاد بدتر شد. کدها اجرا نمیشه. invalid operation میاد. این وارنینگ رو هم میده:

mysqli_real_escape_string() expects exactly 2 parameters, 1 given in C:\wamp\www\my_p\17\common\common.php on line 165

لقمان آوند

عزیز mysqli_real_escape_string دو تا پارامتر میگیره که اولیش connection و دومی رشته هست . اگر نمی خوای ازش استفاده کنی از همون mysql_real_escape_string استفاده کن و یه علامت @ قبل از اسم تابع بزار…

امین ارجمند replyپاسخ

سلام استاد خسته نباشید
– من اومدم یه فرم ساده که یک نام و فامیل و شماره تلفن میگیره رو درست کردم با دیتابیس و بعد الان وقتی کاربر میاد شماره موبایلشو 0910000 یعنی با صفر که شروع میشه صفر رو توی تیبل شماره ذخیره نمیکنه و بدون صفر ذخیره میکنه دلیلش چیه؟ (برای شماره تایپشو Bigint و اندازشم 11 گذاشتم)

لقمان آوند

نوع ستون مذکور در جدول دیتابیس رو varchar بزارید.

امین ارجمند

خب اینو که میدونم اما میخواستم ببینم نمیشه از int استفاده کرد چون عدد بود @ و میخواستم بدونم چرا عدد صفر رو در ابتدا باشه ذخیره نمیکنه
اوکی ممنون

لقمان آوند

این طبیعیه. شما خودتون دارید میگید عدد صحیح هست. صفرهای اول اعداد بی ارزش هستند و برای همن به دید عددی بهش نگاه می کنه و اونا رو نمی بینه.
ضمن اینکه به شماره موبایل نباید به دید int نگاه کنید . ممکنه _ ، + و یا – در شماره باشه !

Massud Tarekhi

باید ZEROFILL رو تو فیلد موردنظر قرار بدی مثل:
;phone BIGINT( 10 ) ZEROFILL

dexpreso replyپاسخ

سلام دکتر عزیز یه مشکل داشتم به ایمیل شما ارسال کردم . ممنون میشم جواب بدهید

لقمان آوند

ایمیل ها پاسخ داده شد.

بهزاد replyپاسخ

سلام
ممنون از حوصله و وقتتون
اگر بخوایم برای سایت یک دانشگاه یک دیتابیس بنویسیم ، این دیتابیس شامل جدول دانشکده ها جدول اساتید جدول دانش آموزان و جدول نمرات و … میشه . حالا اگر سیستم بخواد نمرات یک دانشجو رو چاپ کنه باید توی جدول نمرات ، که شامل تعداد خیلی زیادی داده هست جستجو کنه . چندتا سوال داشتم
1. آیا بهتر نیست برای هر دانشکده یک جدول اساتید و نمرات و … ایجاد کنیم تا حجم پردازش کمتر بشه یا چندان تاثیری نداره ؟
2. آیا در تعداد ایجاد جداول محدویتی وجود داره ؟ و استفاده از جداول زیاد برای کم کردن حجم پردازش رو اصولی می دونید؟
3. اگر بخواهیم قابلیت مثلا تاسیس دانشکده جدید رو اضافه کنیم با علم به اینکه اپراتور سایت توانایی ساخت دستی جدول رو داشته باشه ،قابلیت ساخت جدول با کد بهتره یا دستی ؟

لقمان آوند

سلام
1- خیر ایده خوبی نیست. تعداد جدول ها اگه زیاد بشه در هنگام join شدن جداول زمان اجرا رو بالاتر میبره .
2- نه محدودیتی نیست ولی تا حد ممکن باید سعی کنید تعدادشون متناسب باشه و خیلی زیاد نشه . خیر اصولی نیست اگر فقط بخواید یک جدول رو بشکنید به چند جدول.
3- بهتره اینکارو نکنید . یک جدول واحد برای همه دانشکده ها بهتره … دانشکده جدید هم فقط یک سطر در این جدول هست !

صاحب اصغریان replyپاسخ

وقتی دیتابیس میسازیم توی phphmyadmin حتما باید دیتابیسو export کنیم و در phpstorm قرار بدیم؟

وحید صالحی

خیر دوست عزیز نیازی نیست شما از طریق توابعی که برای اتصال به دیتابیس می نویسید پروژتون رو به دیتابیس متصل می کنید

Amirhossein Roin replyپاسخ

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

لقمان آوند

بایداینکلودش کنید همون اول . چه خطایی میده ؟ تابع sanitize که تعریف شده توی common.php .

Amirhossein Roin

سلام
اینکلود کردم ولی وقتی استفاده میکنم نمیشناسدش

Amirhossein Roin

من دقیقا کد های خودتونو زدم حتی برا اینکه اشتباه نشه اونارو کپی پیست کردم تا ببینم مشکل از منه اما باز هم همون ارورها رو می داد

لقمان آوند

تابه sanitize که توی فایل کامن هست . شما هم که اول اینکلودش کردید و قطعا باید بشناسه .
منظورتون از نمیشناسه که این نیست که phpStorm اسم تابع رو بهتون نمیده و پیشنهاد نمی کنه ؟

Amirhossein Roin

وقتی صفحه رو باز میکنم ارور undefined function sanitize رو میده

لقمان آوند

کدهاتو زیپ کن برام ایمیل کن …

Eagle Seein replyپاسخ

سلام استاد میخواستم درمورد ترنش اکشن یا همون تراکنش و رول بک کردن در صورت شکست خوردن تراکنش داخل رابط های mysql و mysqli و pdo راهنمایی بخوام. هدفم هم درج درد چند تیبل مرتبط به هم هستش. ببخشید زیاد سوال می کنم.

لقمان آوند

سلام
الان منبع دقیقی در این مورد ندارم . با کیوردهای transaction in php mysql تو گوگل سرچ کنید و نتایج رو مطالعه بفرمایید.
روش کار معمولا اینطوره که اول commit کردن پیشفرض (ثبت نهایی هر درخواست بعد از انجام اون) رو غیر فعال می کنید. کوئری های تراکنش رو میزنید و وقتی همه رو زدید خودتون commit رو انجام میدید.
نتایج رو ببین متوجه میشی

مجتبی replyپاسخ

سلام من با این مشکل مواجه شدم و هر چه گشتم جوابی نیافتم. این ارور در خط مربوط به دستور select رخ میده
SQL dialect is not configured. Sybase, SQL Server match best

لقمان آوند

در کجا به این ارور برخورد کردید؟ عکسی از اون صفحه برام ایمیل کنید …

مجتبی replyپاسخ

سلام من با این مشکل مواجه شدم و هر چه گشتم جوابی نیافتم. این ارور در خط مربوط به دستور select رخ میده
SQL dialect is not configured . Sybase, SQL Server match best

لقمان آوند

کجا به این ارور برخورد می کنی ؟

مجتبی

حل شد دکتر..

hassan sepehri replyپاسخ

با سلام خدمت جناب آوند
بنده در ارتباط mysqli و اطلاعات فارسی دراین نوع ارتباط مشکلی دارم که براتون ایمیل کردم!
ممنون میشم جواب بدید مشکلم فوریه باتشکر !

لقمان آوند

پاسخ دادم
موفق باشید

محمد محمودی replyپاسخ

سلام
آقای آوند چرا شما کدها رو از پیش نوشتید و فقط در طی آموزش توضیح میدید ؟
در صورتی که اگر خودتون در طی آموزش مینوشتید خیلی بهتر بود و ما با رفع مشکلات در هنگام کدنویسی هم آشنا میشدیم .
درباره پروژه های جامع آخر دوره هم ناراضی هستم چون بازم شما توضیح میدید و این زیاد جالب نیست ، اگر آموزش پروژه محور بود بهتر میشد یعنی خودتون از صفر تا صد آموزش میدادید ( البته مباحث مربوط به پی اچ پی و نه رابط گرافیکی )

لقمان آوند

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

seyyed ali farrokh replyپاسخ

سلام
قصد دارم از mysqli توی یه پروژه رویه ای استفاده کنم.
منتها یه مشکی پیش میاد و اون اینکه تابع mysqli_query بجز دستور sql ، یه مقدار دیگه که دربرگیرنده اتصال به دیتابیس هست رو هم میخواد.(مثل متغییر $con)
و با این تفاصیر اگر بخوام این متد رو داخل فانکشن خاصی مقل getpost صدا بزنم ، به خاطر اینکه خارج از فانکشن به دیتابیس وصل شدم (و در واقع متغییر $con رو در دسترس ندارم) به مشکل بر میخورم.
ایا راهی برای این مشکل هست؟

لقمان آوند

شما می تونید همون کانکشن رو به تابع پاس بدید و درون تابع ازش استفاده کنید به راحتی !مثلا به عنوان پارامتر اول کانکشن رو بگیره .

seyyed ali farrokh

خب در این صورت باید بجای اینکه یکبار به دیتابیس وصل شم ، توی هر تابع یبار کانکت بشم به دیتابیس و دوباره ببندم دیتابیس رو.ایا کار صحیحی هست این کار؟

لقمان آوند

خیر شما همون یکبار رو در ابتدای کدتون متصل میشید به دیتابیس و اطلاعاتش داخل همون متغیر کانکشن مصل $conn وجود داره. بعد این $conn رو که پاس بدید به تابع درون تابع هم خودش دیگه وصله به دیتابیس و نیازی نیست مجدد از نو متصل شید.

dariosh babaii replyپاسخ

با سلام جناب اوند بنده در کلاس اموزش پی اچ پی ثبت نام کردم وبیشتر مطالب را فرا گرفتم ولی شما مستقیم در باره سیستم ثبت نام کاربران ونحوه عضویت در اموزشها پروژه ای نداشتید من احتیاج به یک اموزش کامل در مورد سیستم عضویت کاربر وارسال ان توسط ای جکس دارم ایا در اموزشهایتان چنین موضعی را درس داده اید یا اگر نه لطفا منابعی فارسی برای اینکار معرفی کنید
با تشکر

لقمان آوند

سلام
تو یکی از پروژه ها این مورد تدریس شده. فکر کنم پروژه فروشگاه تصاویر بود.

رامین امامی replyپاسخ

جناب اقای دکتر سلام
ابتدا بابت آموزش خوب php​ بسیار سپاسگذارم
در قسمت 17 شما پایگاه داده را مورد بررسی قرار دادین و در فایل mysqli.php شما یک کوئری به جدول customers زدین. حال مشکل اینجاست که در فیلم وقتی شما چند حرف اول ان جدول مثلا customers را می اورد می زنید اما برای من نمی اورد ولی به دیتابیس وصل می شود و این پیام می دهد .
no data sources are configured to run this sql and provide advanced code assistance

نسخه های استفاده شده
phpstorm 2016.2
xampp 5.6

لقمان آوند

سلام
اینکه خودش پیشنها میده ربطی به دیتابیس نداره و از قابلیت های phpStorm هست که قابل فعال سازیه. در مورد ارور هم گویا میگه که پایگاه داده و متصل نکردید. اول باید اینکار انجام بشه و بعد کوئری بزنید.

bande نوری replyپاسخ

سلام
من خیلی کارم جایی گیر کرده … برای اتصال به sql server باید چه کنیم؟
دستور sqlsrv_connection() رو نمی شناسه، چجوری فعالش کنیم؟

لقمان آوند

احتمالا اکستنشن مربوط به sql server فعال نباشه.
روی آیکن ومپ کلیک کنید از PHP به PHP EXTENSIONS برید و گزینه mssql رو اگر دیدید فعال کنید

bande نوری

سلام
واقعا ممنون که جواب دادید ..
بعد از کلی جستجو فعالش کردم تو سه مرحله :
1. درایور روی سیستم نصب میشه
2. سری درایور توی php کپی می شه
3.در نهایت درایور هایی که تو php کپی شده تو php.ini اضافه می شه
ولی نمی دونم چقدر درست و حرفه ای این کار رو کردم هر کدومش رو از یه جا خوندم!

الان یه مشکل دیگه خوردم، برای دستور fetch_fields() اخطار دریافت می کنم.
امکان داره این دستور داخل sqlsrv کار نکنه؟

لقمان آوند

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

bande نوری replyپاسخ

سلام
سوال دیگه ای داشتم، من می خواستم به دیتا بیس یه سایت وردپرسی متصل بشم!
روی لوکال اینکار رو کردم ولی وقتی از یه آدرس آنلاین خواستم این کار رو انجام بدم اخطار میده

Host ‘linca’ is not allowed to connect to this MySQL server

لقمان آوند

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

afagh11944 replyپاسخ

سلام ببخشید چنار کنار رکورد های من داخل دیتابیس دکمه های edite_delete_copyوجود ندارد باید از جای خاصی فعالشون کنم

کیوان علی محمدی

سلام. در برنامه phpmyadmin و لیست رکورد های یک جدول این دکمه ها به صورت پیش فرض باید وجود داشته باشه.

afagh11944

خیر نیست الان

لقمان آوند

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

afagh11944 replyپاسخ

ببخشید

در کد بالا که برای اتصال به درگاه بانک ملت هست پارامتر namespace که یک ادرس هم هست برای چیه دقیقا برای چه کاریه این پارامتر

لقمان آوند

فضای نام رو مشخص می کنه. بهتره در مستندات درگاه بانک در موردش بخونید. namespace معمولا برای جلوگیری از بروز تداخل نام و یا استفاده راحتتر از توابع و متدها در یه کتابخانه یا برنامه استفاده میشن.

سحر بشری replyپاسخ

سلام استاد خسته نباشید.مینی پروژه ارور میده:
Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in C:\xampp\htdocs\php\common\common.php on line 166
کامنت های این جلسه رو خوندم ی نفر هم این مشکلو داشت و شما گفتید قبل اسم تابع @ بزاره که ارور دیده نشه ولی خوب اینطوری هم اجرا نمیشه پارامتر اتصال هم بهش دادم اما درست نشد و اخرش هم Invalid Operation .. مینویسه .چیکار کنم درست شه؟

کیوان علی محمدی

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

سحر بشری

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

کیوان علی محمدی

خوب مقدار اتصال رو به صورت global فراخوانی کنید و تست کنید.

سحر بشری

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

کیوان علی محمدی

من الان نمیدونم تابع شما چی هستش که دو تا پارامتر براش تعریف کردین ^_^ .https://www.7learn.com/wp-admin/edit-comments.php#comments-form

فلاح نژاد replyپاسخ

سلام
من یه فرم عضویت طراحی کردم که در ثبت کردن اطلاعات کاربر توی دیتابیس مشکلی نداره! ولی من میخوام قبل از اینکه اطلاعات رو ثبت کنه چک کنه آیا اون کاربر قبلا عضو شده یا نه!برای این کار هم از دستور SELECT استفاده کردم!
فقط مشکل من این هست چطور یک فیلد دیتابیس رو انتخاب کنم و داخل اون فیلد عملیات جستجو رو انجام بدم؟!

وحید صالحی

سلام باید از شرط استفاده کنید در دستور SELECT مثلا:
;”select * from `tbl_user` where username=`ali`” حالا مقدار ali رو برحسب رابط دیتابیس باید براش مقدارش رو از فلید فرم ورود که کاربر پر کرده و ارسال کرده بگیرید و جایگزین مثالمون که ali بود کنید

فلاح نژاد

الان فهمیدم که باید با دستور sql این مشکل رو برطرف کنم ولی سوالی که الان به وجود اومده این هست که
Fetch_fields
و
Fetch_array
کاربرد شون چی هست؟! چون آقای آوند برای چاپ جدول ها از این دو مورد استفاده کردن!

وحید صالحی

Fetch_fileds اطلاعات یک ستون را از یک مجموعه جواب می گیره و بصورت یک شی را بر می گردونه ولی Fetch_array مجموعه جواب بازگشتی بصورت آرایه انجمنی یا اندیسی یا هر دو مورد برمی گردونه

Farid S replyپاسخ

من متوجه نشدم این کاندیشن درون پرانتز while چجوری هربار یک مقدار از آرایه رو برمیگیرونه

    while($row = $result->fetch_array(2)){ 
        echo "<tr style=’background-color: #f7f7f7;’>";
        foreach($row as $val){
            echo "<td style=’padding: 2px 7px’>$val</td>";
        }
        echo "</tr>".PHP_EOL;
    }
کیوان علی محمدی

تابع fetch_array هر بار مقداری رو برمیگردونه و داخل row قرار میده و تابع while هم تا زمانی که این مقدار برابر false نشه حلقه رو ادامه میده.

پدرام فیروزکوهی replyپاسخ

سلام خسته نباشید
ممنون بابت آموزش فوق العاده شما فقط من یه مشکلی دارم توی 2 قسمتی که شما از like استفاده کردید یعنی gmail customers و delete random categories که از کوئری لایک استفاده شده من هر وقت از % استفاده میکنم صفحه 404 not found میده حتی کل فایلهای شما رو کپی کردم همینطوریه باز هم گفتم شاید بخاطر غیرفعال بودن asp tag باشه اونم فعال کردم باز هم سر like ارور بالا رو میده لینکی که برمیگردونه عین ماله شماست اما باز ارور بالا رو میده ممنون میشم راهنمایی کنید :
این لینکی هست که برای من میاد : http://localhost:63342/practise/mysqli.php?op=select&fields=*&table=customers&where=email%20like%20%27%@gmail.%%27

مصطفی replyپاسخ

سلام
من کد زیر رو نوشتم ولی با این ارور مواجه میشم:
Notice: Trying to get property ‘num_rows’ of non-object in C:\wamp64\www\Learning\17\me\mysqli.php on line 15

<?php
require_once "config.php";
include "../../common/common.php";

$mysqli = new mysqli($dbHost, $dbUser, $dbPass);

if ($mysqli->connect_errno) {
    printf("اتصال با شکست روبرو شد : %s\n", $mysqli->connect_error);
    exit();
}

echo "اتصال موفقیت آمیز <br>";

$sql = "select * from customers";
$result = $mysqli->query($sql);
echo $result->num_rows;
مصطفی

با جستجو بالاخره فهمیدم که نام دیتابیس رو نزده بودم :دی

محمدامین عطائی replyپاسخ

سلام من موقعی که فایل common.php رو include کردم و این کدها رو توی mysqli زدم با ارور مواجه شدم :
Fatal error: Uncaught Error: Call to undefined function mysql_real_escape_string() in /opt/lampp/htdocs/7learn/common/common.php:166 Stack trace: #0 /opt/lampp/htdocs/7learn/17/mysqli.php(17): sanitize(‘sad’) #1 {main} thrown in /opt/lampp/htdocs/7learn/common/common.php on line 166

<?php
    require_once "../common/common.php";
    require_once "config.php";
    $mysqli = new mysqli($dbHost, $dbUser, $dbPass, $dbName);
    if(!$mysqli -> select_db($dbName)) {
        echo "<span style=’…’>Problem Selecting database ";
        exit(0);
    }
    if($mysqli -> connect_errno) {
        printf("Connection failed: %s\n", $mysql -> connecy_errno);
        exit();
    }

    echo "Connect successfully to database <b>$dbName</b>. (Using mysql_connect) <br>";

    if(isset($_GET["op"])) {
        $op = sanitize($_GET["op"]);
        if(isset($_GET["database"])) {
            $db = sanitize($_GET["database"]);
            $doPrint = false;
            switch($op) {
                case "show":

                break;
                case "create":

                break;
                case "show":

                break;
                default:
                    echo "<span style=’color: red; font-weight: bold’>Inavalid Operation</span>";
                    exit();
                break;
            }
        }
    }

    $mysqli -> close();
?>
ارسال نظرات

کاربر گرامی، امکان ارسال نظر و پشتیبانی برای دوره های مجازی فقط برای دانشجویان این دوره امکان پذیر می باشد.