Вы не зашли.
Главная » PHP » Выборка без учета регистра
#1. TLENS Off (14)
Moderator
2011.05.10 06:06
Вот зделал функцию для выборки хотел еще зделать простенький поиск но он учитывает регистр чего ему добавить надо? (строка 16)
Я mysql еще не силен кусочки юзаю. А ето не найду нужного.
Код:
span style="color: #0000BB"><?phpfunction search_albom($query, $start = 0, $limit = 10, $search = '') { if (!$search) { switch ($query) { case '1-9': $like = 'REGEXP "^[0-9].*"'; break; case 'a-z': $like = 'REGEXP "^[a-z].*"'; break; default: $like = 'LIKE "'.$query.'%"'; break; } } else { $like = 'LIKE "%'.str_replace(' ','%',$query).'%"'; } $limit = ' LIMIT '.$start.','.$limit; $n = mysql_query('SELECT * FROM `albom` WHERE name '. $like); $n = mysql_num_rows($n); $r = mysql_query('SELECT * FROM `albom` WHERE name '. $like .' ORDER BY name'. $limit); $a = array(); while($row = mysql_fetch_array($r)) { $a[] = $row; } return array($a, $n);}
Отредактировано TLENS (2011.05.10 06:06)
#2. TLENS Off (14)
Moderator
2011.05.10 06:06
Да кстати пробовал BINARY но он мне только с латиной работает
#3. TLENS Off (14)
Moderator
2011.05.10 07:07
Да еще одно сравнение поля стоит utf_general_ci может сменить его?
Отредактировано TLENS (2011.05.10 07:07)
#4. TLENS Off (14)
Moderator
2011.05.10 09:09
Блин пока парился с регистром запортачил таблицу.
Бекап есть но он запортачен я вливал данные через html_specialchars а phpmyadmin не перекодировал при бекапе одинарные ковички.
Можно ли как нибудь спасти таблицы?
Вложения
vsemp3.sql.zip 2mb [загрузок: 512]
#5. TLENS Off (14)
Moderator
2011.05.10 11:11
Вооищем вот кусок кода
Код:
(111, 2073, 'Follow Your Dreams - Marlboro Abenteuer Team ''91 - 1991'),
Вожет как то гегуляркой попробувать?
#6. Gemorroj Off (107)
Administrator
2011.05.10 11:11
насчет регистронезависимого поиска - постфикс "_ci" как раз и говорит о том, чтобы mysql видел данные как регистронезависимые строки.
судя по битым таблицам, у тебя некорректно установлено соединение с БД. SET NAMES utf8 делал? если не напутать с кодировками, то регистронезависимый поиск с кириллицей отлично работает. Есть обходные аврианты, например, налету делать LOWER всем строкам при поиске, но это плохой вариант.
Код:
file_put_contents('/test.sql', iconv('UTF-8', 'CP1252//TRANSLIT//IGNORE', file_get_contents('Z:/home/gmanager/www/data/vsemp3.sql')));
Добавлено спустя   2 минуты  4 секунды:
что тебе от регулярки нужно-то? ты понимаешь что скорость работы регулярки не позволит сделать поиск по бд?
Вложения
test.zip 2mb [загрузок: 513]
#7. TLENS Off (14)
Moderator
2011.05.10 12:12
Спасиб вот только чет track не полностю залился только 13 тыщь
Что это за ошибка
Код:
Notice: Uninitialized string offset: 0 in /home/......../functions.php on line 2685
 
Notice: Uninitialized string offset: 1 in /home/......../functions.php on line 2685
 
Notice: Uninitialized string offset: 0 in /home/......../functions.php on line 2685
 
Notice: Uninitialized string offset: 0 in /home/......../functions.php on line 2685
 
Notice: Uninitialized string offset: 1 in /home/......../functions.php on line 2685
 
Notice: Uninitialized string offset: 0 in /home/......../functions.php on line 2685
 
Notice: iconv_strlen() [function.iconv-strlen]: Detected an illegal character in input string in /home/......../functions.php on line 2801
 
Notice: iconv_substr() [function.iconv-substr]: Detected an illegal character in input string in /home/......../functions.php on line 2801
 
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/......../functions.php on line 2813
 
Notice: iconv_strlen() [function.iconv-strlen]: Detected an illegal character in input string in /home/......../functions.php on line 2801
 
Notice: iconv_substr() [function.iconv-substr]: Detected an illegal character in input string in /home/......../functions.php on line 2801
Твоим менеджером заливал
Начинается с 2685 строки
Это не изза кавычек?
Добавлено спустя   2 минуты  37 секунд:
О все инсталятором залил. Спасибо
Отредактировано TLENS (2011.05.10 12:12)
#8. Gemorroj Off (107)
Administrator
2011.05.10 12:12
Это не найден индекс какой-то. Версия менеджера старая какая-то. Файла functions.php в актуальных версиях уже нету.
SQL файл не распознался полностью. посмотри сначала его. И вообще такие дампы лучше заливать через phpmyadmin, а не менеджер или другие самоделки. Спарсить такой SQL мало кто сможет.
#9. TLENS Off (14)
Moderator
2011.05.10 12:12
phpmayadmin ошибку дает щас новую версию менеджера поставлю.
Gemorroj написал:
насчет регистронезависимого поиска - постфикс "_ci" как раз и говорит о том, чтобы mysql видел данные как регистронезависимые строки.
А какой надо поставить?
Кстати как теперь работать с базой, оно все в CP1252 и возвращает иероглифы
#10. Gemorroj Off (107)
Administrator
2011.05.10 13:01
нет, оно в utf-8. просто у тебя там беда с кодировками. и подключаешься к бд, ты скорее всего некорректно. про SET NAMES еще раз прочитай.
#11. TLENS Off (14)
Moderator
2011.05.10 13:01
phpmyadmin пишет Ошибка в ZIP-архиве: CRC32 checksum is not equal with the value in header information.
А бета менеджер вообще не залевает
Пишет\
Выполнено Запросов: 0
Затронуто строк: 0
Операция Заняла: 0 сек.
Отредактировано TLENS (2011.05.10 13:01)
#12. TLENS Off (14)
Moderator
2011.05.10 13:01
Блин проблема в кавичках
#13. TLENS Off (14)
Moderator
2011.05.11 01:01
Слушай гемор ты можешь обяснить как правильно сформулировать базу.
У меня в txt остались выкачаные ключи к трекам я перезалью по новой.
как именно надо создать таблицу. Чтобы и поиск работал норм и небыло проблем с кодировкой.
#14. TLENS Off (14)
Moderator
2011.05.11 19:07
Все сделал
Код:
lt;?mysql_query("SET NAMES 'utf8';");mysql_query("SET SQL_MODE = 'NO_AUTO_VALUE_ON_ZERO';");mysql_query("SET SESSION character_set_results = 'utf8';");mysql_query("SET collation_connection = 'utf8_unicode_ci';");mysql_query("SET character_set_results = 'utf8';");mysql_query("SET character_set_client = 'utf8';");$sql = mysql_query('SELECT * FROM `albom` LIMIT 0, 30 ');?>
Это надо после каждого соединения с базой вставлять?
Все отображается норм вот только база запортаченая
Прийдерся переливать. По новой
Отредактировано TLENS (2011.05.11 19:07)
#15. Gemorroj Off (107)
Administrator
2011.05.11 20:08
из всего что ты написал нужно лишь mysql_query("SET NAMES 'utf8';");
да, вставлять после соединения с БД, если по умолчанию mysql настроен не на utf8, а по умолчанию он на него НЕ настроен, а у админов руки не оттуда чтобы изменить.
#16. TLENS Off (14)
Moderator
2011.05.11 21:09
ХЗ а сам себе админ.
это в /etc/mysql/my.cnf надо настроить? у меня debian
#17. Gemorroj Off (107)
Administrator
2011.05.11 21:09
Код:
[mysqld]
collation_server=utf8_general_ci
character_set_server=utf8
#18. TLENS Off (14)
Moderator
2011.05.11 21:09
У меня там нет настройки кодировки по крайней мере я не нашел ео нашел отдел [mysqld]
Код:
#
# The MySQL database server configuration file.
#
# You can copy this to one of:
# - "/etc/mysql/my.cnf" to set global options,
# - "~/.my.cnf" to set user-specific options.
#
# One can use all long options that the program supports.
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html
 
# This will be passed to all mysql clients
# It has been reported that passwords should be enclosed with ticks/quotes
# escpecially if they contain "#" chars...
# Remember to edit /etc/mysql/debian.cnf when changing the socket location.
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
 
# Here is entries for some specific programs
# The following values assume you have at least 32M ram
 
# This was formally known as [safe_mysqld]. Both versions are currently parsed.
[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0
 
[mysqld]
#
# * Basic Settings
#
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
language = /usr/share/mysql/english
skip-external-locking
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#
# * Fine Tuning
#
key_buffer = 16M
max_allowed_packet = 16M
thread_stack = 128K
thread_cache_size = 8
# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched
myisam-recover = BACKUP
#max_connections = 100
#table_cache = 64
#thread_concurrency = 10
#
# * Query Cache Configuration
#
query_cache_limit = 1M
query_cache_size = 16M
#
# * Logging and Replication
#
# Both location gets rotated by the cronjob.
# Be aware that this log type is a performance killer.
#log = /var/log/mysql/mysql.log
#
# Error logging goes to syslog. This is a Debian improvement :)
#
# Here you can see queries with especially long duration
#log_slow_queries = /var/log/mysql/mysql-slow.log
#long_query_time = 2
#log-queries-not-using-indexes
#
# The following can be used as easy to replay backup logs or for replication.
# note: if you are setting up a replication slave, see README.Debian about
# other settings you may need to change.
#server-id = 1
#log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 10
max_binlog_size = 100M
#binlog_do_db = include_database_name
#binlog_ignore_db = include_database_name
#
# * BerkeleyDB
#
# Using BerkeleyDB is now discouraged as its support will cease in 5.1.12.
skip-bdb
#
# * InnoDB
#
# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
# Read the manual for more InnoDB related options. There are many!
# You might want to disable InnoDB to shrink the mysqld process by circa 100MB.
#skip-innodb
#
# * Security Features
#
# Read the manual, too, if you want chroot!
# chroot = /var/lib/mysql/
#
# For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
#
# ssl-ca=/etc/mysql/cacert.pem
# ssl-cert=/etc/mysql/server-cert.pem
# ssl-key=/etc/mysql/server-key.pem
 
 
 
[mysqldump]
quick
quote-names
max_allowed_packet = 16M
 
[mysql]
#no-auto-rehash # faster start of mysql but no tab completition
 
[isamchk]
key_buffer = 16M
 
#
# * NDB Cluster
#
# See /usr/share/doc/mysql-server-*/README.Debian for more information.
#
# The following configuration is read by the NDB Data Nodes (ndbd processes)
# not from the NDB Management Nodes (ndb_mgmd processes).
#
# [MYSQL_CLUSTER]
# ndb-connectstring=127.0.0.1
 
 
#
# * IMPORTANT: Additional settings that can override those from this file!
# The files must end with '.cnf', otherwise they'll be ignored.
#
!includedir /etc/mysql/conf.d/
Добавлено спустя   2 минуты  36 секунд:
слушай я поставил general_ci
а в скрипте наверное буду вызывать где надо unicode_ci
Добавлено спустя   7 минут  14 секунд:
Не сработало почему то без настроек после соединения
Вот что у меня в настройках
Код:
#
# The MySQL database server configuration file.
#
# You can copy this to one of:
# - "/etc/mysql/my.cnf" to set global options,
# - "~/.my.cnf" to set user-specific options.
#
# One can use all long options that the program supports.
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html
 
# This will be passed to all mysql clients
# It has been reported that passwords should be enclosed with ticks/quotes
# escpecially if they contain "#" chars...
# Remember to edit /etc/mysql/debian.cnf when changing the socket location.
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
 
# Here is entries for some specific programs
# The following values assume you have at least 32M ram
 
# This was formally known as [safe_mysqld]. Both versions are currently parsed.
[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0
 
[mysqld]
 
#
# * Basic Settings
#
 
############################
collation_server =utf8_general_ci
character_set_server =utf8
############################
 
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
language = /usr/share/mysql/english
skip-external-locking
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#
# * Fine Tuning
#
key_buffer = 16M
max_allowed_packet = 16M
thread_stack = 128K
thread_cache_size = 8
# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched
myisam-recover = BACKUP
#max_connections = 100
#table_cache = 64
#thread_concurrency = 10
#
# * Query Cache Configuration
#
query_cache_limit = 1M
query_cache_size = 16M
#
# * Logging and Replication
#
# Both location gets rotated by the cronjob.
# Be aware that this log type is a performance killer.
#log = /var/log/mysql/mysql.log
#
# Error logging goes to syslog. This is a Debian improvement :)
#
# Here you can see queries with especially long duration
#log_slow_queries = /var/log/mysql/mysql-slow.log
#long_query_time = 2
#log-queries-not-using-indexes
#
# The following can be used as easy to replay backup logs or for replication.
# note: if you are setting up a replication slave, see README.Debian about
# other settings you may need to change.
#server-id = 1
#log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 10
max_binlog_size = 100M
#binlog_do_db = include_database_name
#binlog_ignore_db = include_database_name
#
# * BerkeleyDB
#
# Using BerkeleyDB is now discouraged as its support will cease in 5.1.12.
skip-bdb
#
# * InnoDB
#
# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
# Read the manual for more InnoDB related options. There are many!
# You might want to disable InnoDB to shrink the mysqld process by circa 100MB.
#skip-innodb
#
# * Security Features
#
# Read the manual, too, if you want chroot!
# chroot = /var/lib/mysql/
#
# For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
#
# ssl-ca=/etc/mysql/cacert.pem
# ssl-cert=/etc/mysql/server-cert.pem
# ssl-key=/etc/mysql/server-key.pem
 
 
 
[mysqldump]
quick
quote-names
max_allowed_packet = 16M
 
[mysql]
#no-auto-rehash # faster start of mysql but no tab completition
 
[isamchk]
key_buffer = 16M
 
#
# * NDB Cluster
#
# See /usr/share/doc/mysql-server-*/README.Debian for more information.
#
# The following configuration is read by the NDB Data Nodes (ndbd processes)
# not from the NDB Management Nodes (ndb_mgmd processes).
#
# [MYSQL_CLUSTER]
# ndb-connectstring=127.0.0.1
 
 
#
# * IMPORTANT: Additional settings that can override those from this file!
# The files must end with '.cnf', otherwise they'll be ignored.
#
!includedir /etc/mysql/conf.d/
Страниц: 1 2 Все
Главная
WEB
PunBB Mod v0.6.2
0.022 s