PDA

View Full Version : کنترل خطا های mysql



HAMIDyekta
سه شنبه 27 خرداد 1393, 11:20 صبح
دوستان عزیز من یه بانک اطلاعاتی دارم که توی این بانک اطلاعاتی یک فیلد به صورت یونیک تعریف شده حال می بایست که تنها می بایست یک رکورد با این فیلد و این مقدار در بانک اطلاعاتی ایجاد گردد درسته .
خب حالا من میخوام اگر مجددا همین مقدار خواست داخل بانک ذخیره بشه کنترل خطا کنم و پیام خطا را تو PHP نمایش بدم .
ضمنا به مقدار id Auto هم حتی یک واحد هم افزوده نگردد.

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

hamedarian2009
سه شنبه 27 خرداد 1393, 12:05 عصر
سلام شما قبل از آنکه عمل درج انجام بدین باید یک select به آن جدول بزنین و بررسی کنید اگه مقدار وارد شده توسط کاربر در دیتابیس موجود بود یک پیغام خطا چاپ بشه و از برنامه exit بشه در غیر اینصورت عمل درج انجام بشه

HAMIDyekta
سه شنبه 27 خرداد 1393, 12:36 عصر
تشکر از وقتی که گذاشتید
راه دیگه ای نداره مثلا با کنترل خطا کردن در زمان Insert into؟
این عمل که یکبار select بزنیم و چک کنیم و یکبار insert باعث میشه که ترافیک بانک اطلاعاتی بالا بره اینطور نیست راه دیگه نداره واقعاً؟

hamedarian2009
سه شنبه 27 خرداد 1393, 23:10 عصر
خب شما میتونید این سلکت رو هم نزنید چون فیلد شما در دیتابیس به صورت unique تعریف شده خوده insert در صورت تکراری بودن مقدار اون فیلد انجام نمیشه و مقدار false رو برمیگردونه کافیه بنویسین اگر کوئری false بود پیغام خطا براتون صادر کنه اما در اینصورت احتمال صد در صد نیست که حتما به خاطر اون فیلد خطا صادر شده شاید به دلایل دیگری هم کوئری اجرا نشه

MMSHFE
چهارشنبه 28 خرداد 1393, 12:31 عصر
شما بعد از INSERT باید affected rows رو بررسی کنید. اگه 1 بود یعنی درج شده. اگه 0 بود یعنی درج نشده. اگه عدد منفی بود یعنی کوئری خطا داشته. بعد از این چک کردن میتونید mysql_error رو بررسی کنید ببینید علت درج نشدن چی بوده و اگه گفته بود DUPLICATED KEY یا چیزی شبیه این، یعنی بخاطر مقدار تکراری درج نشده.