Рекомендованное решение, если передавать запросы прямо, заключается в использовании mysql_real_escape_string
по параметрам - хотя для этого требуется сначала открыть соединение с базой данных. Это важно, чтобы избежать экранирования среднего символа, используя определенные кодировки, принимая во внимание характер кодирования базы данных при выходе. Кроме того, mysql_escape_string
устарел.
Однако, если возможно, рекомендуется использовать функцию prepared statements библиотеки mysqli; это позволяет вам передавать параметры запроса в качестве аргументов в PHP-методы, поэтому почти гарантирует, вы не будете испортить, удалив необходимость выполнить экранирование.
Предполагая, что вы используете встроенные инструменты базы данных Kohana, вы также можете использовать its prepared statement support or query builder, который также поддерживает подготовленные запросы и не требует экранирования.
Благодарим вас за этот быстрый и проницательный ответ. – Phil
вы очень приветствуете :) еще одно дополнение: если вы не хотите, чтобы ваши пользователи могли сохранять поисковый запрос url, используя запрос POST (это сделает ваш url более чистым и сделает Google немного счастливее ;)) – giorgio
Еще раз спасибо. Но я думаю, что мне нужен запрос на получение, потому что это частная база знаний, над которой я работаю. Но почему это сделает Google счастливее? Кроме того, вы имеете в виду, что когда кто-то выполняет запрос, я буду переформатировать URL-адрес страницы результатов с url_encode? Не могли бы вы пояснить, пожалуйста? Спасибо. – Phil