PDA

View Full Version : سوال: یه خطای همیشگی



mahnaz_tbe
یک شنبه 27 دی 1388, 09:22 صبح
سلام.خوبین؟آقا من یه مشکل دارم.این دستور من مشکلی داره؟



UPDATE sent SET statues = '1' WHERE ( delivery = 'mahnaz' OR delivery = 'mahnaz'
) AND username = 'admin' AND subject = 'پاسخ به : salam.mahnaz' AND time = '09:11:10 am' AND message = 'man modiram.replay---------------------------------------------ارسال شده توسط :mahnaz در تاریخ :1388/10/27در ساعت :09:09:03 amsalam modirjan' AND statues = '0'
من نمی دونم چرا همش پیغام

#1267 - Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='


به من نشون داده میشه.دلیل این خطا چیه؟:ناراحت:
البته فکر کنم دلیلش اینه که کلمات فارسی و لاتین با هم تو مقادیر شرطم به کار رفته.ولی چیکار کنم که دستور اجرا بشه و خطا نگیره؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

nextplus
یک شنبه 27 دی 1388, 10:57 صبح
دوست عزیز به نظر من نیازی به این همه کد نیست.

فکر فیلد PK رو بخاطر همین کار گذاشتن.
شما از ی id استفاده کن که کلید شما باشه و update های روی جدول تون رو با استفاده از همون id انجام بده.

mahnaz_tbe
یک شنبه 27 دی 1388, 11:05 صبح
اگه ممکنه همین مسئله رو حل کنین.من نمی خوام صورت مسئلم رو پاک کنین.خوب فرض کنیم چاره ای جز استفاده از همین فیلدها نداریم.فکر کنین نمیشه فیلدی به جدول اضافه کرد.:ناراحت:

nextplus
یک شنبه 27 دی 1388, 11:18 صبح
به احتمال زیاد Collation فیلدهاتو latin یا نوعی تعریف کردی که نمیتونه به utf تبدیل کنه
چون مقدارهای شرط شما utf و احتمال بروز خطا از نوعشه.
نوع فیلد هاتو چک کن یا اینکه تو شرطت Collation رو تبدیل کن.

nextplus
یک شنبه 27 دی 1388, 11:21 صبح
البته اگه نوع فیلد هات default تعریف شده
با این دستور مشکلت رفع میشه.


alter table `sent` convert to character set
utf8 collate utf8_general_ci;

mahnaz_tbe
یک شنبه 27 دی 1388, 19:32 عصر
نوع Colation جدول Defult هستش.قبلاً یه بار UTF8 هم تغییر دادم بازم از این خطاها می ده.:ناراحت:

s_salavati2002
یک شنبه 27 دی 1388, 22:16 عصر
نوع Colation جدول Defult هستش.قبلاً یه بار UTF8 هم تغییر دادم بازم از این خطاها می ده.:ناراحت:
با ورژن های مختلف mysql امتحان کن
احتمال اینکه bug باشه خیلی زیاده

mahnaz_tbe
سه شنبه 29 دی 1388, 09:03 صبح
درست نشد.با ورژن بالاتر هم چک کردم.من می دونم.مشکلش به خاطر اینه که فارسی و انگلیسی با هم تو مقدار فیلدها به کار رفته.چون وقتی مقدارها کاملاً لاتین باشه مشکل و خطائی نیست.چیکارش کنم؟

snail22
چهارشنبه 30 دی 1388, 00:33 صبح
شاید با encode کردن مشکل حل بشه
برای انکد کردن می تونی از تابع urlencode استفاده کنی

binyaft
چهارشنبه 30 دی 1388, 14:30 عصر
من هم با snail22 موافقم

mahnaz_tbe
پنج شنبه 01 بهمن 1388, 10:07 صبح
من اصلاً با این تابع کار نکردم.ولی الان که Search کردم گفته که برای به کد تبدیل کردن و کد گشائی داده هائی که باید تو URL استفاده بشه واسه امنیت بیشتر استفاده میشه.فکر نمی کنم چندان ربطی داشته باشه.داره؟؟؟؟؟؟
من می خوام ببینم واسه هیشکی تا حالا پیش نیومده که بخواد یه رشته که شامل هم حروف فارسی و هم انگلیسی هستش به دیتابیس ارسال کنه؟واسش مشکل پیش اومده یا مه؟اگه آره چیکار کرده؟:ناراحت::افسرده:
شما مطمئنین که مشکل من با این فرمان حل میشه؟من طرز استفادشو هم نمی دونم.میشه با این کدی که من تو اولین پست گذاشتم مثال بزنین که این کلمه رو کجا و چجوری باید بکار ببرم؟ممنون:لبخندساده:

mahnaz_tbe
شنبه 03 بهمن 1388, 07:54 صبح
چرا کسی جواب نمی ده؟:ناراحت:

rasoolgh1
دوشنبه 05 بهمن 1388, 21:35 عصر
این کمکی میکنه
http://php.net/manual/en/function.urlencode.php