указав кодировку mysql_real_escape_string вручную, поэтому соединение с БД не требуется - возможно? - PullRequest
0 голосов
/ 01 февраля 2012

, хотя я понимаю, почему mysql_real_escape_string требует активного подключения mysql для экранирования различных строк, я надеялся на следующее:

какой-то способ вручную (э-э, терминология здесь, возможно, «статически» будетправильный термин) поместите кодировку в mysql_real_escape_string, чтобы не требовалось активное соединение с БД для запуска mysql_real_escape_string.

, так как некоторые люди могут спросить, почему мы хотим mysql_real_escape_string без активного соединения, причина проста:

a) construct query (this is where the mysql_real_escape_string takes place)
b) create hash (md5, md4, sha1, crc32, choose your poison) from said query
c) check cache (memcached) for hash created in step b
d) query cached in memcached -> return cached results -> terminate script
c) query NOT cached in memcached -> connect to mysql -> cache result to memcached + return result

, как вы можете видеть из вышеприведенного, потому что хэш запроса создается до проверки кэша / подключения к БД, если это необходимо ... mysql_real_escape_string происходит ДО создания соединения БД.

вся цель этого состоит в том, чтобы, если мы смогли выполнить «запрос всей страницы» исключительно из обращений к кешу, просто не нужно было подключаться к mysqld.period.

Теперь у нас есть большой набор запросов, в которых соединение db выполняется только для выполнения mysql_real_escape_string.это не нужно.

итак, чтобы подвести итог:

нам нужен способ БЕЗОПАСНО экранировать строки mysql (значения POST и GET, поэтому он должен быть безопасным на 100%) без созданиядБ соединение.

спасибо.

Ответы [ 2 ]

1 голос
/ 01 февраля 2012

Я бы предложил другой подход:

function search(array $params) {
    $cacheKey = md5(serialize($params));

    ... search cache ...

}

Вам не нужно запускать хэш для запроса , вы можете просто запустить его с указанными параметрами. Предположительно, каждый раз запрос будет одинаковым.

0 голосов
/ 01 февраля 2012

Требуется соединение MySQL перед использованием mysql_real_escape_string (), в противном случае генерируется ошибка уровня E_WARNING и возвращается FALSE.Если link_identifier не определен, используется последнее соединение MySQL.

Как на веб-сайте документации php.net.

...