ورود

View Full Version : سوال: مشکل در استفاده از LIKE در MYSQL در PHP



IKHATAMI
دوشنبه 30 اردیبهشت 1387, 18:09 عصر
با سلام
من قبلا در محیطهای دیگر همچون دلفی با دستورات اس کیو ال کار کرده ام و مشکل نداشته ام ولی در PHP به تازگی با این دستورات در محیط MYSQL کار می کنم این دستور به ظاهر باید درست کار کند ولی کل بانک را احضار می کند در صورتیکه ما فقط رکوردهایی را می خواهیم که فیلد نام آنها با حرف مورد نظر شروع می شوند کمکم کنید


select * from BANK1 where NAME like "م%"


:افسرده::عصبانی++:
به دلیل اینکه من خیلی فوری به این جواب نیاز دارم اگر ممکن است جواب را همچنین به ایمیل من IKHATAMI110@GMAIL.COM ارسال نمایید

cs2007
دوشنبه 30 اردیبهشت 1387, 18:54 عصر
$query = "select * from tblName where fieldName like \"%$criteria%\"
order by fieldName";

IKHATAMI
دوشنبه 30 اردیبهشت 1387, 18:59 عصر
با تشکر از جواب شما
ولی ظاهرا مشکل من ناشی از استفاده از کاراکترست 1256 می باشد چون در کاراکترست یوتی اف 8 من چنین مشکلی ندارم.
مجددا تاکید می کنم که در بازیابی اطلاعاتی که با کارکتر خاصی شروع شوند فقط من مشکل دارم.
:ناراحت:
این دستوری که شما نوشته اید مربوط به این است که شامل کاراکتر خاصی باشد نه با کارکتر خاصی شروع شده باشد

cs2007
دوشنبه 30 اردیبهشت 1387, 19:12 عصر
اگر منظورتان را درست فهمیده باشم:

$query = "SELECT * FROM tblName WHERE fieldName LIKE \"م%\";

برای من این درست کار مینماید:

اگر فارسی استفاده مینمایید باید به این کار نمایید:


mysql_query("SET NAMES utf8");
mysql_query("SET CHARACTER SET utf8");

$query = "SELECT * FROM tblName WHERE fieldName LIKE \"م%\" ORDER BY fieldName COLLATE utf8_persian_ci ";

IKHATAMI
سه شنبه 31 اردیبهشت 1387, 08:16 صبح
با تشکر
ولی مشکل من با کارکترست 1256 است فرض بر این است که اطلاعات من با این کارکترست در بانک ذخیره شده است جهت جستجو و بازیابی اطلاعات با این کاراکترست مشکل دارم

vahid4134
سه شنبه 31 اردیبهشت 1387, 13:45 عصر
خوب همون اولش اشتباه ذخیره کردید. یا باید کل دیتابیس رو درست کنید یا اینکه وقتی از کاربر ورودی رو می گیرید با str_replace کاراکتر درست رو جایگزین کنید

IKHATAMI
سه شنبه 31 اردیبهشت 1387, 17:13 عصر
با تشکر
من حتی وقتی کاراکترست را به یو تی اف تغییر میدهم و اطلاعات را به صورت یوتی اف ذخیره می کنم مرتب سازی اطلاعات بازیابی شده اشتباه کار می کند یعنی با دستور order که براساس نام مرتب می کنم به این صورت نمایش میدهد به عنوان مثال:
باقر
حسن
حسین
رضا
جواد
عسگری
علی
سجاد
صادق
فاطمه
مهدی
کاظم
هادی
:افسرده:

vahid4134
سه شنبه 31 اردیبهشت 1387, 22:40 عصر
http://www.iranphp.net/index.php?option=com_smf&Itemid=33&topic=2195.0

IKHATAMI
چهارشنبه 01 خرداد 1387, 08:06 صبح
راستش جوابی از این سایت عاید ما نشد البته از معرفی این سایت کمال تشکر را دارم ولی من هنوز مشکلم باقی است:
ببینید من یک بانک اطلاعاتی دارم که تا به حال در پاراداکس کار میکرده و 1256 است الان آن بانک را به مای اس کیو ال منتقل کرده ام.
وقتی در همان کاراکترست 1256 کار میکنم در پرس و جوی زیر همه بانک را احضار می کند نه آن اطلاعات خاصی که من می خواهم یعنی تمام نامها اعم از آنهایی که با م شروع می شوند یا نمی شوند:
select * from ttable where name like "م%"
ولی اگر در کارکتر ست یوتی اف کار کنم یعنی با ابزاری اطلاعات را به کاراکترست یوتی اف تبدیل کنم بازیابی درست کار می کند ولی در مرتب سازی خراب می کند:
select * from ttable order by name

خواهش می کنم مرا راهنمایی کنید :عصبانی++::افسرده::گریه:

cs2007
چهارشنبه 01 خرداد 1387, 12:05 عصر
سلام.
فکر کنم که این مشکل را حل نماید...

چون خودم نیز با این مشکل دچار شدم...


$query = "SELECT * FROM bank1 WHERE name LIKE \"م%\" ORDER BY name, BINARY name ASC";

IKHATAMI
چهارشنبه 01 خرداد 1387, 18:54 عصر
با تشکر
مشکل من تا حدودی حل شد ولی بازهم در مورد حرف م و ک ظاهرا مشکل وجود دارد چون کلماتی که با این دو شروع می شوند در آخر سورت قرار می گیرند البته شاید حروف دیگری هم باشد مثال من :
آثار - 90
الی - 91
باقر - 78
بیام - 89
جابر - 87
جاور - 88
جامد - 86
جواد - 82
حسن - 75
حسین - 76
رضا - 81
سجاد - 77
صادق - 79
عسگری - 84
علی - 74
فاطمه - 73
هادی - 83
مهدی - 85
کاظم - 80

cs2007
چهارشنبه 01 خرداد 1387, 23:51 عصر
آیا قبل از کیوری، کیوری های زیررا اجرا مینمایید:


mysql_query("SET NAMES utf8");
mysql_query("SET CHARACTER SET utf8");


و هم چنان قبل از کیوری insert ؟

IKHATAMI
پنج شنبه 02 خرداد 1387, 09:11 صبح
این دو خطی که فرمودید را در قبل از کوری بازیابی گذاشته ام ولی تاثیری نداشت.
در قبل از کوری insert هم گذاشتم ولی خطای odbc داد و این دو خط را قبول نکرد. مشکل همچنان باقی است من مثال بانک اطلاعاتی خودم را می فرستم به همراه تکه برنامه نمونه ثبت و بازیابی اطلاعات لطفا چک کنید و اگر لازم است تغییراتی بدهید تا جواب در ست شود بازهم از شما کمال تشکر را دارم
http://rapidshare.com/files/116687935/test_zip.exe.html

منتظر تماس شما هستم با تشکر

cs2007
پنج شنبه 02 خرداد 1387, 21:16 عصر
میشه لطف نموده فایل را اینجا آپلود نمایید ...