رفتن به مطلب

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


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

سلام

من از دستور


$order_id = $dbModel->insert_id;

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


Notice: Undefined property: dbModel::$insert_id

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

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

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

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

لینک به ارسال

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

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

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

کوئریم 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
لینک به ارسال

اینو تست کنید


$id = mysqli_insert_id($link);

link کانکشن دیتابیس هست

لینک به ارسال

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


Notice: Undefined property: dbModel::$insert_id

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

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

لینک به ارسال

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


Notice: Undefined property: dbModel::$insert_id

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

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

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

لینک به ارسال

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

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

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

لینک به ارسال

این پراپرتی پیش فرض 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 نکنی به هیچ کد دیگه ای اجازه دسترسی به اون چیز رو نمیده

لینک به ارسال

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

ممنون

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

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...