У меня есть список имен в моей базе данных, и я должен найти идентификатор имени, которое я передаю в URL.
Моя проблема в том, что имена, которые я передаю в URL, не будут иметь места в них, пока сохраненная запись будет в базе данных. Когда я ищу базу данных, я не получаю никаких записей.
например, запись базы данных – это «Мое имя», в то время как то, что я буду передавать в URL-адресе, и поиск с «myname»,
if(isset($_GET["name"])) $name = $_GET["name"]; SELECT id FROM table WHERE name Like '%$name%'
Спасибо за любую помощь.
// id don't know the exact syntax, but this is what you are searching for I guess: // replace spaces with nothin temporarily, then check equal (=) not like (%%) if name is exactly the same (except the spaces) SELECT id, REPLACE(name, ' ', '') AS tmp FROM table WHERE tmp='%$name%'
Очевидно, что это неправильный способ хранения или поиска, но если нужно, попробуйте заменить пробелы следующим образом:
SELECT id FROM table WHERE REPLACE(`name`,' ','') LIKE '%$name%'
Я считаю, что наилучшей практикой является сохранение другого столбца, называемого чем-то вроде name_nospaces, и вставка myname в качестве вычисленного значения в него, когда вы вставляете запись My Name. Вы также можете создать представление, содержащее мое имя как столбец и запрос для него, но преимущество другого столбца в исходной таблице состоит в том, что его можно индексировать для быстрого извлечения.