رفتن به مطلب

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


پست های پیشنهاد شده

سلام

من از دستور


$order_id = $dbModel->insert_id;

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


Notice: Undefined property: dbModel::$insert_id

ویرایش شده توسط Anisi
لینک به ارسال

کوئری شما چی هست؟

اون کلاس چی هست؟

از روی این تیکه کد که نمیشه چیزی گفت

  • امتیاز 1
لینک به ارسال

کوئری شما چی هست؟

اون کلاس چی هست؟

از روی این تیکه کد که نمیشه چیزی گفت

کوئریم INSERT هست.

کلاس هم کلاس ارتباط با دیتابیس mysqli هست که کدش رو قبلا در این تاپیک گذاشتم:

لینک به ارسال

بصورت زیر استفاده کنید:

$last_id = $this->con->insert_id;

نه! آخه $dbModel عضوی از کلاس نیست. یک شیئه که در خود تابع ایجاد شده.

ویرایش شده توسط Anisi
لینک به ارسال

الان به این شکله؟

$dbModel = کوئری

به این شکله:


$myDb = new dbModel;
$query = "INSERT INTO test (username, password)
VALUES ($username, $password)";
$result = $myDb-> query($query);
$last_id = $myDb->insert_id;

لینک به ارسال

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

ویرایش شده توسط Anisi
لینک به ارسال

آخه جواب نمیده! چه باید کرد؟ من خودمم هرچی گشتم همین کد فقط بود.

ویرایش شده توسط Anisi
لینک به ارسال

کد اخری که Parsa گذاشته باید جواب بده


Notice: Undefined property: dbModel::$insert_id

ایا همچین پراپرتی برای کلاستون ایجاد کردین که دارین فراخونیش میکنین؟(معنی این پیغام همین هست)

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

  • امتیاز 3
لینک به ارسال

کد اخری که Parsa گذاشته باید جواب بده


Notice: Undefined property: dbModel::$insert_id

ایا همچین پراپرتی برای کلاستون ایجاد کردین که دارین فراخونیش میکنین؟(معنی این پیغام همین هست)

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

این پراپرتی پیش فرض mysql هست. اگر اشتباه می کنم دوستان تصحیح کنن!

لینک به ارسال

درسته مربوط به mysqli هست

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

بهتره در کلاستون insert_id را به متغییر لوکال نسبت بدهید و اون رو استفاده کنید

  • امتیاز 4
لینک به ارسال

این پراپرتی پیش فرض mysql هست. اگر اشتباه می کنم دوستان تصحیح کنن!

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

شما یه متغییر public اول کلاست تعریف کن به اسم

public $insert_id
;

و در انتهای تابع query کلاست

$insert_id = $this->con->insert_id;

اونو مقدار دهی کن تا بتونی


$myDb = new dbModel;
$query = "INSERT INTO test (username, password)
VALUES ($username, $password)";
$result = $myDb-> query($query);
$last_id = $myDb->insert_id;

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

هر کلاسی محدوده(scop)خودشو داره و خاصیت کلاس هم اینه که تا چیزی رو درونش Public نکنی به هیچ کد دیگه ای اجازه دسترسی به اون چیز رو نمیده

  • امتیاز 4
لینک به ارسال

عجب اشتباهی! بعضی وقتا کارایی می کنما. :wacko:

ممنون

ویرایش شده توسط Anisi
لینک به ارسال

لطفا برای ارسال دیدگاه وارد شوید

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



ورود به حساب کاربری
×
×
  • اضافه کردن...