• 1 رای - 4 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
عدم ثبت اطلاعات در پایگاه داده sql server
#1
سلام دوستان خواهش میکنم اگه کسی میتونه کمکم کنه مشکلم رفع بشه
من دو تا فایل php ایجاد کردم حالا با نام فرض مثلا X و Y در فایل X سه تا تکست باکس درست کردم که اطلاعات اصلی و پرونده یک دانشجو رو میگیره مثل کد ملی کلاسه پرونده اش و سال ورودش حالا میخوام این اطلاعات رو ارسال کنم به صفحه Y که در صفحه Y هم چند تا تکست باکس و جعبه متنی هست که میتونه مثلا اعتراضی ثبت کنه، وقتی توی تکست باکس و جعبه متن صفحه Y اطلاعاتی رو میریزم و insert میکنم ثبت میشه ولی میخوام که اون کد ملی و کلاسه پرونده و سال ورودی هم که از صفحه X گرفتم هم بتونم در پایگاه داده insert کنم ولی نمیشه
نکته جالب اینه که توی صفحه Y اومدم دو تا دستور select نوشتم بر اساس همون سه مولفه ایی که از صفحه X میگیره و اطلاعات رو در صفحه Y به من برمیگردونه ولی insert نمیشه
ضمنا پایگاه داده من sql server هست.
خط کدی که در فایل X.php نوشتم و باعث میشه سه تا مقداری که از تکست باکس میگیره رو به Y.php ارسال کنه

کد پی‌اچ‌پی:
header("location:sabt-eteraz.php?meli=$_POST[cod_meli]&k_parvandeh=$_POST[k_parvandeh]&sal=$_POST[sal]");

// خط کد هایی که در فایل Y.php نوشتم و اون مقادیر صفحه X رو در متغیر ها نوشتم و در دستورات sql  اون ها رو از پایگاه داده خوندم که میخونه و نشون میده 
$meli_1"$_GET[meli]";
$k_parvandeh"$_GET[k_parvandeh]";
$sal"$_GET[sal]";
$sql="select *from moadi_inf where modi_seq='$meli_1'";
$sql2="select *from shogh_inf where k_parvand='$k_parvandeh'";

// این خط کد هم در فایل Y.php  در ادامه دستورات بالا نوشته شده ولی اون سه مقدار کد ملی کلاسه و سال رو در کد زیر در پایگاه داده insert نمیکه 
query_1=$connect->prepare("INSERT INTO eteraz_inf (cod_meli, k_parvande,sal) VALUES('$meli_1','$k_parvandeh ','$sal')");
$query_1->execute();

    if(
$query_1)
    {
        echo 
"OK";        
    }
    else
    {
        echo 
"NO";
   } 

مطلبی هم که هست هیچ خطایی نمیده فقط ذخیره نمیشه یعنی در دستور if آخر هم کلمه OK رو چاپ میکنه
  پاسخ
تشکر شده توسط :
#2
این کد رو جایگزین اون خط prepare و execute بکن ببین چه خطایی میده:
کد پی‌اچ‌پی:
try
{
    
query_1 $connect->prepare("INSERT INTO `eteraz_inf` (`cod_meli`, `k_parvande`, `sal`) VALUES ('{$meli_1}', '{$k_parvandeh} ', '{$sal}');");
    
$query_1->execute();
}
catch (
PDOException $exception)
{
    echo 
$exception->getMessage();


برای بررسی خطاهای PDO بهتره از Exception استفاده کنی.
وبلاگ: Yousha.Blog.ir


 کد کمتر => خطای کمتر => قابل فهمتر => خوانایی بالاتر => نگهداری بهتر

  پاسخ
تشکر شده توسط :
#3
سلام
ممنون از وقتی که گذاشتی
هیچ خطایی رو نشون نمیده SadSad
میدونین اگه توی کدم به جای {$meli_1}', '{$k_parvandeh} ', '{$sal} مقدار دستی بدم توی پایگاه داده ذخیره میشه ولی نمیدونم چرا این متغیر ها ذخیره نمیشن توشون مقدار هم هست چون چاپ کردم مقدار هارو و دیدمشون
  پاسخ
تشکر شده توسط :
#4
نقل قول:هیچ خطایی رو نشون نمیده
احتمالاً exception مال PDO غیرفعال هستش...
اینو امتحان کن:
کد پی‌اچ‌پی:
try
{
    
$connect->setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION);
    
query_1 $connect->prepare("INSERT INTO `eteraz_inf` (`cod_meli`, `k_parvande`, `sal`) VALUES ('{$meli_1}', '{$k_parvandeh} ', '{$sal}');");
    
$query_1->execute();
}
catch (
PDOException $exception)
{
    echo 
$exception->getMessage();



یا اینو در پایین دستور execute قرار بده:
کد پی‌اچ‌پی:
print_r($connect->errorInfo()); 


اگر دست نشد، اینارو انجام بده:
1- کدهای اتصال به دیتابیس رو چک کن.
2- تعداد و نوع فیلد های جدول eteraz_inf رو چک کن که با کدت درست باشه.
3- مطمعن شو که error_reporting خاموش نباشه. و Log های PHP رو چک کن
وبلاگ: Yousha.Blog.ir


 کد کمتر => خطای کمتر => قابل فهمتر => خوانایی بالاتر => نگهداری بهتر

  پاسخ
تشکر شده توسط : ayoubsys
#5
یه همچین چیزی چاپ میکنه البته با کدی که برای بار دوم نوشتین
Array ( [0] => 00000 [1] => [2] => )
و با کد اولی این خطا رو
SQLSTATE[22001]: [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]String or binary data would be truncated

ODBC Driver 11 for SQL Server این رو هم روی سیستمم قبلا نصب کرده بودم

اون قسمتی هم که گفتین چک بکنم همه این کار هارو کردم ، با همین تابع کانکتی که ساختم یه جدول دیگه توی دیتابیس درست کردم و به صورت تست هم که شده کد های اتصال رو چک کردم
تعداد و نوع فیلد های جدول eteraz_inf رو هم چک کردم درسته
  پاسخ
تشکر شده توسط :
#6
نقل قول:String or binary data would be truncated
truncated = ناقص کردن، برش دادن، کوتاه کردن
و اون خطا یعنی ظرفیت یکی از فیلدها کمتر از مقدار دیتایی هست که داری به داخلش insert می کنی
مثلاً طول فیلدت 5 کاراکتره، ولی داری 6 کاراکتر یه داخلش insert می کنی

MsSQL اسکله
وبلاگ: Yousha.Blog.ir


 کد کمتر => خطای کمتر => قابل فهمتر => خوانایی بالاتر => نگهداری بهتر

  پاسخ
تشکر شده توسط : kasbookar Alaa
#7
سلام
ممنون مشکلم حل شد
دست شما درد نکنه
  پاسخ
تشکر شده توسط : Y.P.Y
#8
نقل قول:MsSQL اسکله
آی خندیدم به این حرفت که نگو ، کلا هرچی برنامه نویس mssql بود بردی زیر سوال Big GrinBig GrinBig GrinBig GrinBig GrinBig Grin
  پاسخ
تشکر شده توسط : Y.P.Y


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان