PDA

View Full Version : نتیجه گرفتن بهتر از دستور like



boysilent
پنج شنبه 08 فروردین 1392, 15:30 عصر
سلام دوستان عزیز:
میخواسم ببینم چطوری میشه دستور لایک رو نوشت که نتیجه بهتر گرفت مثلا آموزش جاوا و آموزش آجاکس فقط با دیدن آموزش لیست کنه
با این کد انجام دادم ولی نمیشه

mysql_query("SELECT * FROM _tbup WHERE `sub` LIKE '%{$sub}%'");

MRmoon
پنج شنبه 08 فروردین 1392, 16:34 عصر
mysql_query("SELECT * FROM _tbup WHERE `sub` LIKE '%{$sub}%' OR `sub` LIKE '{$sub}%' OR `sub` LIKE '%{$sub}'");

ببین کار میکنه

boysilent
پنج شنبه 08 فروردین 1392, 17:08 عصر
mysql_query("SELECT * FROM _tbup WHERE `sub` LIKE '%{$sub}%' OR `sub` LIKE '{$sub}%' OR `sub` LIKE '%{$sub}'");

ببین کار میکنه
ممنون از توجهتون ولی قبلا اینو امتحان کرده بودم ،نه جواب نمیده:چشمک:

Unique
پنج شنبه 08 فروردین 1392, 20:44 عصر
راستش اگه متغیر sub$ شما مقدارش برابر با آموزش باشه با قرار گرفتن بین دو کاراکتر ٪ قطعا باید هر موضوعی که توش آموزش هست را بیاره ، مشکل باید از جای دیگه باشه .... ، در کل کلا با این موضوع قررادادن متغیر و غیره توی quote حال نمیکنم ، این باید هر دو را لیست کنه مگه اینکه اصلا وجود نداشته باشه :


mysql_query("SELECT * FROM _tbup WHERE sub LIKE '%".$sub."%'");

boysilent
پنج شنبه 08 فروردین 1392, 20:51 عصر
راستش اگه متغیر sub$ شما مقدارش برابر با آموزش باشه با قرار گرفتن بین دو کاراکتر ٪ قطعا باید هر موضوعی که توش آموزش هست را بیاره ، مشکل باید از جای دیگه باشه .... ، در کل کلا با این موضوع قررادادن متغیر و غیره توی quote حال نمیکنم ، این باید هر دو را لیست کنه مگه اینکه اصلا وجود نداشته باشه :


mysql_query("SELECT * FROM _tbup WHERE sub LIKE '%".$sub."%'");
آره فقط همون رو لود میکنه یعنی خود شو فقط؟

MMSHFE
جمعه 09 فروردین 1392, 08:06 صبح
شاید خیلی مرتبط نباشه ولی Collation دیتابیس/جداول/فیلدها رو چک کنید که روی utf8_bin باشه. ضمناً کوئری 'SET NAMES 'utf8 قبل از این کوئری اجرا شده باشه. اگر هم از mysql_real_escape_string استفاده میکنید، قبلش حتماً دستور ;('mysql_set_charset('utf8 رو اجرا کنید.

boysilent
جمعه 09 فروردین 1392, 08:25 صبح
شاید خیلی مرتبط نباشه ولی Collation دیتابیس/جداول/فیلدها رو چک کنید که روی utf8_bin باشه. ضمناً کوئری 'SET NAMES 'utf8 قبل از این کوئری اجرا شده باشه. اگر هم از mysql_real_escape_string استفاده میکنید، قبلش حتماً دستور ;('mysql_set_charset('utf8 رو اجرا کنید.
اینکار ها هم انجاام شده بود:افسرده::افسرده:

boysilent
جمعه 09 فروردین 1392, 08:35 صبح
دوستان عزیز من نتیجه گرفتم گفتم شماهم استفاده کنید

mysql_query("SELECT * FROM _tbup WHERE MATCH(sub) AGAINST('+$sub' IN BOOLEAN MODE) ");

http://programmers.stackexchange.com/questions/155645/better-way-to-search-for-text-in-two-columns

MMSHFE
جمعه 09 فروردین 1392, 11:52 صبح
خوبه که مشکلتون رفع شد ولی دقت کنید که Full Text Search فقط در MyISAM قابل دسترسی هست و توی InnoDB این ویژگی در دسترس نیست.

2undercover
جمعه 09 فروردین 1392, 13:14 عصر
خوبه که مشکلتون رفع شد ولی دقت کنید که Full Text Search فقط در MyISAM قابل دسترسی هست و توی InnoDB این ویژگی در دسترس نیست.

من توی stackoverflow.com خوندم که Full Text Search توی نسخه ی 5.6.4 MySQL به InnoDB اضافه شده: Fulltext Search with InnoDB (http://stackoverflow.com/questions/1381186/fulltext-search-with-innodb)

MMSHFE
جمعه 09 فروردین 1392, 15:17 عصر
نمیدونم والا، توی سایت MySQL.com چیزی ندیدم. باز هم بررسی میکنم و اگه واقعاً بود، خبر میدم ولی تا جایی که اطلاع دارم، پشتیبانی نمیشه.