مشکل دستور LIKE در mysql با زبان فارسی

این تاپیک 1 پاسخ و 2 مشارکت کننده دارد . آخرین آپدیت توسط :  فرهاد ،‏ 2 ماه و 3 هفته پیش .

این تاپیک تاکنون 162 بازدید داشته است .

نویسنده پست
شنبه ، 10 سپتامبر 2016     11:29 ق.ظ #


علی

Subscriber
17 پست16 تاپیک

سلام دوستان

یه همچین دستوری دارم که قراره عبارت وارد شده توسط کاربر رو بزاره توی متغییر $name و بعد هر پست که حاوی اون هست رو سلکت کنه.


SELECT * FROM " . $this->postsTable . " WHERE tags LIKE '%" . $name . "%' ORDER BY id DESC

مشکلی که الان پیش اومده اینه که این کد فقط با زبان انگلیسی میتونه سلکت کنه و در فارسی کلا هیچی نمیتونه پیدا کنه!تو دیتابیس همین کد رو چک کردم درست جواب میده اما وقتی تو php اجرا میشه با این مشکل مواجه میشم.

ممنون میشم راهنمایی کنید

0  تشکر
:: این تاپیک، پاسخ تائیدشده دارد : مشاهده پاسخ تائید شده توسط سوال کننده
یکشنبه ، 11 سپتامبر 2016     2:46 ق.ظ # پاسخ تائید شده توسط سوال کننده


فرهاد

Subscriber
VIP
26 پست3 تاپیک

سلام دوست عزیز

اگر در mysql می تونید همین دستور رو اجرا کنید ولی از طریق php نمی تونید دلیلش می تونه این باشه که کاراکترها در حین انتقال بین مای اس کیو ال و php انکودینگشون تغییر می کنه.

اگر از رابط pdo برای ارتباط با دیتابیس استفاده می کنید رشته اتصالتون یه پارامتر می گیره به اسم charset که باید روی utf8 ست شده باشه.

به این شکل:

و اگر از رابط mysqli استفاده می کنید باید یک بار قبل از کوئری هایی که به دیتابیس می زنید این کوئری رو اجرا کنید

ضمن اینکه در جداول دیتابیس فیلد هایی که حاوی کاراکترهای فارسی هستند رو مقدار collation رو باید روی utf8_general_ci قرار بدید.

0  تشکر
پست 1 تا 2 (از مجموع 2 پست)

این تاپیک پاسخ تائید شده دارد و بسته شده است .