Запись в MySQL

Varg

Guest
Запись в MySQL

Так, это опять я :)
Проблема:
Каким сочетанием функций в ПХП можно в varchar MySQL записывать ввод из поля пользователя? Чтобы все скобки, ковычки и пр. перевести в html код (скобка становится lt...), и чтобы ещё это и в базу запихивалось.
Сколько пробовал - никак. Проблема в бэкслеше...

в общем вот так вот...
 

Hijacker

Guest
1. Пришла строка(переменная) $param из формы или ещё от куда. Ты ей $param = stripslashes($param);
ну а дальше <> меняешь на &lt; и &gt;
 

jonny_k

Guest
Автор оригинала: Hijacker
1. Пришла строка(переменная) $param из формы или ещё от куда. Ты ей $param = stripslashes($param);
ну а дальше <> меняешь на &lt; и &gt;
Вы господин ерунду говорите... stripslashes нужен при выборке из БД. Для решения изложенной проблемы необходимо:
при складывании в БД - mysql_escape_string (htmlspecialchars ($string)), но тут нужно помнить что, полученный результат по длине будет больше чем $string. Поэтому при записи в БД лучше просто сказать mysql_escape_string ($string).
А при выборке - stripslashes (htmlspecialchars (...))
 

Hijacker

Guest
Автор оригинала: jonny_k
Вы господин ерунду говорите...
Так вы, батенька, и вопросы тогда задавайте конкретней, а то вас поймёшь по-одному, вы хотели сказать другое, а потом же ещё говорите что мы тут гоним...
Лучше тогда вообще в молчанку уходить, если вопрос неясный, а то пытаешься выяснить (помочь)....а... нк вообщем понятно всё
 

jonny_k

Guest
Автор оригинала: Hijacker
Так вы, батенька, и вопросы тогда задавайте конкретней, а то вас поймёшь по-одному, вы хотели сказать другое, а потом же ещё говорите что мы тут гоним...
Лучше тогда вообще в молчанку уходить, если вопрос неясный, а то пытаешься выяснить (помочь)....а... нк вообщем понятно всё
Дык вопрос не я задавал, а в молчанку не надо, я лучше за резкость извинюсь, чем народ в молчанку будет уходить. Лана, думаю тема исчерпана целиком и полностью...
 

Varg

Guest
Автор оригинала: jonny_k
Дык вопрос не я задавал, а в молчанку не надо, я лучше за резкость извинюсь, чем народ в молчанку будет уходить. Лана, думаю тема исчерпана целиком и полностью...
Всем спасибо. Всё заработало :)
 

Varg

Guest
А ещё, если с помощью
mysql_escape_string
обработать строку "la la la ' la la la" и записать, то запрос
SELECT * FROM table WHERE stroka="la la la ' la la la"
найдёт эту запись?
 

jonny_k

Guest
Автор оригинала: Varg
А ещё, если с помощью
mysql_escape_string
обработать строку "la la la ' la la la" и записать, то запрос
SELECT * FROM table WHERE stroka="la la la ' la la la"
найдёт эту запись?
1) когда говоришь INSERT:
"INSERT INTO table (stroka) VALUES ('".mysql_escape_string ("la la la ' la la la")."');"
в итоге в БД будет лежать la la la \' la la la

2) когда говоришь SELECT:
"SELECT * FROM table WHERE stroka='".mysql_escape_string ("la la la ' la la la")."';"

при отображении говоришь на результат выборки stripslashes (...)

по моему более чем понятно...
 

jonny_k

Guest
в итоге в БД будет лежать la la la \' la la la
-----
Млин, слэш обдирается, здесь перед апострофом должен быть обратный слэш...
 

Varg

Guest
Ладно. Я всё понял. Но теперь другой вопрос.

Есть данные (Varchar) значения английские и русские. И при выборке релевантеым методом
SELECT * FROM table WHERE name LIKE '%a%'
Он находит все 'а' (к примеру) английские и все 'а' русские. Иногда он находит записи где 'а' вообще нету. Может где locale надо прописать, или как? Точный поиск работает прекрасно...
 

Varg

Guest
И ещё вопрос:

Насколько быстро пройдут последовательно около десяти запросов типа
SELECT * FROM table WHERE chtoto='unique'
из разных таблиц, если в таблицах два-три поля, и всего 30-40 записей?
 

AnToXa

prodigy-одаренный ребенок
Автор оригинала: Varg
И ещё вопрос:
Насколько быстро пройдут последовательно около десяти запросов типа
SELECT * FROM table WHERE chtoto='unique'
из разных таблиц, если в таблицах два-три поля, и всего 30-40 записей?
если поле объявлено unique или создан (уникальный) индекс, то все ЛЕТАЕТ, точно говорю
 

Varg

Guest
А на предидущий вопрос ответа не знаешь?
 

AnToXa

prodigy-одаренный ребенок
Автор оригинала: Varg
А на предидущий вопрос ответа не знаешь?
надо собирать mysql с поддержкой твоей кодировки, а потом ее указывать... как указывать не помню :)

кстати еще и система вроде должна бы уметь с локалями работать
 

jonny_k

Guest
Автор оригинала: Varg
Ладно. Я всё понял. Но теперь другой вопрос.
Есть данные (Varchar) значения английские и русские. И при выборке релевантеым методом
SELECT * FROM table WHERE name LIKE '%a%'
Он находит все 'а' (к примеру) английские и все 'а' русские. Иногда он находит записи где 'а' вообще нету. Может где locale надо прописать, или как? Точный поиск работает прекрасно...
'а' русское и 'a' латинское это разные символы, поэтому если они у тебя находятся всместе, значит просто вводилось не русская 'а', а латинская или наоборот. А проблемы с русским языком от кривой настройки MySQL, тут надо админа пинать...
 

Varg

Guest
Автор оригинала: jonny_k
'а' русское и 'a' латинское это разные символы, поэтому если они у тебя находятся всместе, значит просто вводилось не русская 'а', а латинская или наоборот. А проблемы с русским языком от кривой настройки MySQL, тут надо админа пинать...
Нет. Я сам заполнял тестовую базу, и в словах например "Test" и "Весть" по запросу "е" (любой и рус и англ.) находит оба.
А Мискл настроен там хорошо.
 
Сверху