ага. в новой версии ты отказался от дополнительных addslashes для LIKE я правильно тебя понял? или ты всё ещё не определился, и будешь вертеться, как уж на сковородке, дальше?
ну и из-за каких таких обстоятельств сейчас у тебя второй вариант вдруг испарился из кода? и от каких обстоятельств зависит, его появление?
Вообще то в запросах я ни когда не ставлю addslashes Сначала обрабатываю переменную (addslashes, ….. ) а потом ее вставляю в quoteString() В данном случае addslashes не требуется
Ну и что? А с чего ты взял, что не пашет именно из-за Addslashes? почему такое гонение именно на эту функцию?
я с трудом понимаю смысл этого сообщения. в quotestring использыется addslashes. то есть, из твоих слов следует, что ты применяешь её два раза. и тут же ты пишешь, что она не требуется вовсе. Ну хорошо. А в каких случаях требуется?
я могу написать другой тест. при котором у тебя не прокатит уже эта конструкция. но не буду. поскольку основную задачу приведённый мной код не выполнил - не заставил тебя думать. и сделать что-то осмысленное. Ты способен только скопировать чужой кривой код, не понимая его смысла, а потом метаться, как посетитель детсада: "ну, если так не работает, то уберем". В общем, ты с таким пафосом общаешься, что у меня закралась шальная мысль о том, что ты, может быть, действительно что-то соображаешь в программировании. Теперь я убедился в обратном. Собственно, приведённый мной пример преследовал именно эту цель.
PHP: <?php function _str_replace($src, $dest, $data) { global $PHPVER; if ($PHPVER >= 0x4050) return str_replace($src,$dest,$data); $s = reset($src); $d = reset($dest); while ($s !== false) { $data = str_replace($s,$d,$data); $s = next($src); $d = next($dest); } return $data; } class DB { var $replaceQuote = "\\'"; ... function quoteString($s,$magic_quotes=false) { if (!$magic_quotes) { if ($this->replaceQuote[0] == '\\'){ $s = _str_replace(array('\\',"\0"),array('\\\\',"\\\0"),$s); } return "'".str_replace("'",$this->replaceQuote,$s)."'"; } $s = str_replace('\\"','"',$s); if ($this->replaceQuote == "\\'") return "'$s'"; else { $s = str_replace('\\\\','\\',$s); return "'".str_replace("\\'",$this->replaceQuote,$s)."'"; } } ... } ?> Мне интересно мнение Чебургена по поводу этого кода
В данном коде есть функция quoteString которая обрабатывает строковые переменные для их использования в запросах ОН ТОЖЕ КРИВОЙ?
мне всегда казалось, что для обработки переменных для их использования в запросах служит функция mysql_real_escape_string. Ну, или addslashes, на худой конец.
И вот опять у меня гордость за наших русских программистов – которые утверждают что наши зарубежные коллеги пишут куча бессмысленного кода в своих проектах а точнее в ADODB Library for PHP4
brodyaga, в который раз у меня грусть за тебя — ты в который раз вырвал чужой код из контекста, и опять не понимаешь смысла функций, там используемых...
Чебурген, они этой «кучей мусора» просто пытаются реализовать максимальную совместимость, и я их за это не виню. Но человек, совершенно не понимающий, о чем говорит, вообще просто выводит меня из себя!
Хех. Вырвал из либы с плейсхолдерами, автоматически применяется ко всем параметрам для WHERE PHP: <?php function quote_param($a) { return preg_match('/^\d+$/', $a)? $a : "'".addslashes($a)."'"; } ?>
непонятно, зачем. когда можно просто $a="'".addslashes($a)."'"; не говоря уже о том, что это годится только для тех параметров, которые пишутся справа от знака равно
Чебурген, они для них и используются. С остальными параметрами принцип работы и их передача чуть отличаются. Я знаю твою позицию, что сэкономленные миллисекунды на преобразования типов ничего не значат )
наоборот. потраченные на разбор регом ;-) но, на самом деле, гораздо важнее не это а то, что там стоит Addslashes, а не mysql_real_escape_string, как должно быть.
Чебурген, неа. Она у меня не только в MySQL используется, на работе у меня php_mysql вообще не подключен и эта же функция экранирует их для работы с Ораклом, с которым кстати type casting в целочисленных параметрах не работает, по крайней мере, в нашей версии сервера, поэтому и проверяется тип параметра. Достаточная аргументация? =)
тогда надо писать две ветки. если у тебя для оракла используется Addslashes - это не повод с MySQL работать неправильно
а вообще я не понимаю прикола этих библиотек, которые используются "не только в MySQL". Запросы-то все равно разные