Здравствуйте, уважаемые! У меня есть база данных, она состоит из 4 столбиков. Имя, Телефон, E-mail, Пароль У меня есть поле, в которое я ввожу текст (номер телефона или E-mail) Это поле = $telefon_pochta И есть кнопка, которая выполняет SQL-запрос. Выполняется такой допустим запрос: "SELECT * FROM users where telefon like $telefon_pochta or pochta like $telefon_pochta" Предположим, в базе есть запись Вася, 89221234567, vasya@vasya.info, 12345 Если в поле я ввожу 89221234567 и нажимаю кнопку, то на экране вижу данные о Васе (успешно). Если в поле я ввожу vasya@vasya.info, то сайт падает в ошибку. Я так понимаю из-за знака "собачка", "собака", "@"?
В общем решил, что необходимо сделать так, чтобы изначально не было в таблице записей, содержащих знак "@", для этого добавил корректировку в запрос, отправляющий данные в таблицу. Чтобы везде, где есть "@" заменялось на нижнее подчёркивание "_". Вот например: $pochta = str_replace("@", "_", $pochta); А потом, соответственно при поиске также, если пользователь вводит в поле что-то, где есть "@", то оно подставляется на "_"
Не в собачке "@" было дело. Даже если любую букву вводить, то тоже была бы ошибка. Причина - ошибка при составлении запроса. Забыл добавить кавычки одинарные ('$telefon_pochta') "SELECT * FROM users where telefon like '$telefon_pochta' or pochta like '$telefon_pochta'"
первый вопрос - а какой формат поля где хранится e-mail? у меня крутится несколько задач работающих с e-mail и ни разу не было проблем с отработкой...
Добрый день! Тип данных в поле где хранится e-mail: varchar Длина см. ниже: https://www.rfc-editor.org/errata_search.php?rfc=3696&eid=1690 Удачи!