• 1 رای - 3 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
خطای syntax در یک query
#1
با سلام
من برای ارسال داده هام به دیتابیس از یک ادیتور استفاده می کنم . query من رو هم برای این کار در ذیل می بینید . اما در هنگام اجرای این query خطای اشکال در syntax زیر رو به من میده . خودم تشخیص می دم که چون ادیتور داخل کد های html ی که تولید می کند کوتیشن و دابل کوتیشن داره توی query مشکل ایجاد می کنه . البته این رو هم بگم که من توی سیستم خودم که از wamp5 استفاده می کنم مشکلی ندارم و query خیلی خوب اجرا میشه اگه کسی تجربه این خطا رو داره راح حلشو ارائه کنه
این هم متن خطا :

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '<p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 11.25pt;" dir="rtl' at line 4

این هم query:

در کد زیر متغیر های $news_textfull و$ news_textا شامل کد های تولید شده توسط ادیتور هستند .
کد پی‌اچ‌پی:
$query="INSERT INTO `news` (`news_id`, `news_title`, `news_text`, `news_textfull`, 
`news_pic`,`category`,`author`,`news_time`,`news_date`,`news_day`,`breaking_news`,`display_date`,`view_count`,`serious`) 
VALUES
 ('', \""
.$news_title."\", '".$news_text."', '".$news_textfull."',\"itcom/".$path."\", \"".$category."\",\"".$author."\", \"$time\", \"$jdate\",\"$day\",\"".$breaking_news."\",\"".$display_date."\",\"0\",\"".$serious."\") ";
                  if ( 
mysql_query("$query",$conn)){
                   print(
"<b dir=\"rtl\">مطلب مورد نظر با موفقیت ارسال شد !</b>");
                  }else{print(
"<b dir=\"rtl\">ارسال مطلب مورد نطر با مشکلی روبرو شده است !!!<b>");
                  } 
  پاسخ
تشکر شده توسط :
#2
(۱۳۸۷ اسفند ۱۹, ۰۱:۴۱ ب.ظ)oia نوشته: این تابع شاید به تو کمک کنه

http://ir.php.net/manual/en/function.addslashes.php
  پاسخ
تشکر شده توسط :
#3
سلام،
اگر news_id مقدارش AutoIncrease هستش، می تونید ,' ' رو در اول Values بردارید.
همچنین به جای قرار دادن این همه Slashe، به این صورت بنویسید:
کد پی‌اچ‌پی:
'" . $_Value . "' 
بجای دستور print، از دستور echo استفاده کنید.
ار تابعی که دوستان معرفی کردند هم استفاده کنید.
موفق باشید.
وبلاگ: Yousha.Blog.ir

صدام: "اگر با ارتش شاه ایران طرف بودیم، یک ماهه جنگ را می بردیم"
http://gulfnews.com/opinion/thinkers/ira...i-1.500997
  پاسخ
تشکر شده توسط : molana
#4
سلام.

دوست عزيز از اين كد استفاده كن.

کد پی‌اچ‌پی:
$query="INSERT INTO `news` 
(`news_id`, `news_title`, `news_text`, `news_textfull`,`news_pic`,`category`,`author`,`news_time`,`news_date`,`news_day`,`breaking_news​`,`display_date`,`view_count`,`serious`) 
VALUES
 ('', '
$news_title', '$news_text', '$news_textfull','itcom/$path', '$category','$author', '$time', '$jdate','$day','$breaking_news','$display_date','0','$serious'') ";
 
                  if ( 
mysql_query($query,$conn)){
                   echo 
"<b dir=\"rtl\">مطلب مورد نظر با موفقیت ارسال شد !</b>";
                  }else{echo
"<b dir=\"rtl\">ارسال مطلب مورد نطر با مشکلی روبرو شده است !!!<b>" ;
                  } 
  پاسخ
تشکر شده توسط :
#5
با تشکر از همه دوستان
همه این کار ها رو کردم ولی جواب نگرفتم . آیا نسخه mysql می تونه موجب این خطا شده باشه ؟؟
  پاسخ
تشکر شده توسط :
#6
(۱۳۸۷ اسفند ۲۱, ۱۱:۰۷ ق.ظ)AHMADBADPEY نوشته: با تشکر از همه دوستان
همه این کار ها رو کردم ولی جواب نگرفتم . آیا نسخه mysql می تونه موجب این خطا شده باشه ؟؟

قبل از قرار دادن متغيرها در كوئري حتما از addslashes استفاده كن.

حالا اگه ميتوني ورودي خودت يا صفحه اصلي رو ارسال كن . شايد تو نستيم كمكت كنيم.
  پاسخ
تشکر شده توسط :
#7
دوستان با تشکر
مشکل با استفاده از addslashes حل شد . باز هم ممنون
فقط یه مشکل کوچولو در یه جای دیگه دارم خطای زیر چه معنی ای می ده البته این خطا اصلا مربوط به موضوع قبلی نیست
Duplicate entry '0' for key 1
  پاسخ
تشکر شده توسط :
#8
شما سعی دارید که برای یک فیلدی که منحصر به فرد هست دو مقدار یکسان ذخیره کنید و این اخطار رو می گیرید
  پاسخ
تشکر شده توسط :
#9
(۱۳۸۷ اسفند ۲۱, ۰۲:۲۲ ب.ظ)AHMADBADPEY نوشته: دوستان با تشکر
مشکل با استفاده از addslashes حل شد . باز هم ممنون
فقط یه مشکل کوچولو در یه جای دیگه دارم خطای زیر چه معنی ای می ده البته این خطا اصلا مربوط به موضوع قبلی نیست
Duplicate entry '0' for key 1

همانطور كه وحيد جان گفتند ، شما در حال درج (insert) يك كليد اصلي هستيد كه قبلا اضافه شده است.

اگه auto_increament است بجاي قرار دادن مقدار صحيح يا هر چيزي از NULL استفاده كن.
  پاسخ
تشکر شده توسط :
#10
من این کار رو کردم:
کد پی‌اچ‌پی:
$group=trim($_POST['group']);
   
$title_cat=$_POST['title_cat'];
   if (
$query=mysql_query("insert into cat_list (cat_name,group) values ('".$title_cat."','".$group."')",$conn)){
    print(
"موضوع مورد نظر با موفقیت ایجاد شد .");
    }
//if ($query
     
else{
      print(
"اشکالی در ایجاد موضوع جدید پیش آمده است.");
      echo(
mysql_error());
     } 

اما خطای زیر رو بهم داد . اصلا sytax صحیح یه query چه جوریه ؟
اشکالی در ایجاد موضوع جدید پیش آمده است.You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'group) values ('Visual Basic','آموزش')' at line 1
ببخشید !!!!!!
این query منه :
کد پی‌اچ‌پی:
$group=trim($_POST['group']);
   
$title_cat=$_POST['title_cat'];
   if (
$query=mysql_query("insert into cat_list (cat_id,cat_name,group) values ('".NULL."','".$title_cat."','">$group."')",$conn)){
    print(
"موضوع مورد نظر با موفقیت ایجاد شد .");
    }
//if ($query
     
else{
      print(
"اشکالی در ایجاد موضوع جدید پیش آمده است.");
      echo(
mysql_error());
     } 
  پاسخ
تشکر شده توسط : Maya


پرش به انجمن:


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