ok, я еще не слишком обучен SQL, но я хочу, чтобы у меня был массив поисковых роботов и IP-адресов (или частичных IP-адресов)), которые я хочу исключить из возвращаемых результатов SQL.Имея некоторые проблемы с формированием правильного SQL-запроса с использованием НЕ IN и PHP-массива
Массив уже правильно сформирован для запроса SQL и выглядит следующим образом (и хранится в $ sql_exclude):
'googlebot', 'crawl', 'spider', 'bluehost', 'amazonaws', 'msnbot', 'surphace-scout', 'scoutjet', 'facebook', 'tfbnw.net', 'digg', 'spinn3r', 'favsys.net', 'trendnet.org', '72.14.192.', '72.14.194.'
проверяет, запросов в отношении как ф и user_agent столбцов в БД, чтобы увидеть если любой из них содержит какие-либо элементы в массиве, и если да, я не хочу, чтобы они возвращались в результатах.
Прямо сейчас, это запрос, который я пробовал, и делает для меня «смысл», но он ничего не возвращает. Может ли кто-нибудь указать, где ошибка?
$sql = "SELECT w.* FROM {bad_behavior_log} w WHERE ($sql_exclude) NOT IN w.user_agent AND ($sql_exclude) NOT IN w.ip " . tablesort_sql($header);
Кроме того, поскольку пользовательские агенты являются смешанным случаем, это проблема? И/или когда пользовательский агент, с которым он проверяет, имеет в нем слово «GoogleBot», а термин массива - просто «google», будет ли SQL-запрос автоматически найти частичное совпадение? (для частичных IP-адресов).
Update: Ради тщательности, и в случае, если кто читает это позже, я решил мою проблему с 2-мя вещами:
1) По какой-то причине, не уверен, если это установка моего хозяина (в Bluehost), Мне нужно было преобразовать все строки поиска для моих операторов сравнения (НЕ НРАВИТСЯ) в верхний регистр, или он будет произвольно соответствовать некоторым и не соответствовать некоторым смешанным поисковым запросам.
2) Скобка вокруг моих переменных SQL также вызывала удушение запроса. т. е. ($ sql_exclude) должно быть всего $ sql_exclude.
Вот мой последний, работая, строка запроса: $ SQL = "SELECT * FROM ш {bad_behavior_log} ш ГДЕ НЕ w.user_agent как $ sql_exclude_agents И НЕ w.ip как $ sql_exclude_ips.". tablesort_sql ($ заголовка);
и строки в этих переменных выглядит следующим образом: $ sql_exclude_agents = " '("И НЕ w.user_agent LIKE '%, $ exclude_agents "%.";%" Взрываются%")'.'
(превращается) НЕ НРАВИТСЯ '% GOOGLE%' AND NOT w.user_agent LIKE '% YAHOOCACHESYSTEM%' AND NOT w.user_agent LIKE '% RSSGRAFFITI%' AND NOT w.user_agent LIKE '% BITLYBOT%' (и т. д.)
'NOT IN' не получит частичное совпадение –