За последние 24 часа нас посетили 34485 программистов и 1693 робота. Сейчас ищут 674 программиста ...

Функции для экранирования кавычек в MySQL

Тема в разделе "PHP для новичков", создана пользователем Anonymous, 17 ноя 2006.

  1. ага.
    в новой версии ты отказался от дополнительных addslashes для LIKE
    я правильно тебя понял?
    или ты всё ещё не определился, и будешь вертеться, как уж на сковородке, дальше?
     
  2. Anonymous

    Anonymous Guest

     
  3. ну и из-за каких таких обстоятельств сейчас у тебя второй вариант вдруг испарился из кода?
    и от каких обстоятельств зависит, его появление?
     
  4. Anonymous

    Anonymous Guest

    Вообще то в запросах я ни когда не ставлю addslashes

    Сначала обрабатываю переменную (addslashes, ….. ) а потом ее вставляю в quoteString()
    В данном случае addslashes не требуется
     
  5. Anonymous

    Anonymous Guest

    5 стр. 1 сообщение
    Вы же проверяли – не пашет
     
  6. Ну и что? А с чего ты взял, что не пашет именно из-за Addslashes? почему такое гонение именно на эту функцию?
     
  7. Anonymous

    Anonymous Guest

    С того что проверил
     
  8. я с трудом понимаю смысл этого сообщения.
    в quotestring использыется addslashes. то есть, из твоих слов следует, что ты применяешь её два раза.
    и тут же ты пишешь, что она не требуется вовсе.

    Ну хорошо. А в каких случаях требуется?
     
  9. я могу написать другой тест. при котором у тебя не прокатит уже эта конструкция.
    но не буду. поскольку основную задачу приведённый мной код не выполнил - не заставил тебя думать. и сделать что-то осмысленное.
    Ты способен только скопировать чужой кривой код, не понимая его смысла, а потом метаться, как посетитель детсада: "ну, если так не работает, то уберем".

    В общем, ты с таким пафосом общаешься, что у меня закралась шальная мысль о том, что ты, может быть, действительно что-то соображаешь в программировании.
    Теперь я убедился в обратном.
    Собственно, приведённый мной пример преследовал именно эту цель.
     
  10. Anonymous

    Anonymous Guest

    PHP:
    1. <?php
    2.    
    3.     function _str_replace($src, $dest, $data)
    4.     {
    5.         global $PHPVER;
    6.    
    7.         if ($PHPVER >= 0x4050) return str_replace($src,$dest,$data);
    8.        
    9.         $s = reset($src);
    10.         $d = reset($dest);
    11.         while ($s !== false) {
    12.             $data = str_replace($s,$d,$data);
    13.             $s = next($src);
    14.             $d = next($dest);
    15.         }
    16.         return $data;
    17.     }
    18.    
    19.     class DB {
    20.    
    21.         var $replaceQuote = "\\'";
    22.         ...
    23.         function quoteString($s,$magic_quotes=false)
    24.         {  
    25.             if (!$magic_quotes) {
    26.                 if ($this->replaceQuote[0] == '\\'){
    27.                     $s = _str_replace(array('\\',"\0"),array('\\\\',"\\\0"),$s);
    28.                 }
    29.                 return  "'".str_replace("'",$this->replaceQuote,$s)."'";
    30.             }
    31.            
    32.             $s = str_replace('\\"','"',$s);
    33.            
    34.             if ($this->replaceQuote == "\\'")
    35.                 return "'$s'";
    36.             else {
    37.                 $s = str_replace('\\\\','\\',$s);
    38.                 return "'".str_replace("\\'",$this->replaceQuote,$s)."'";
    39.             }
    40.         }
    41.         ...
    42.     }
    43.     ?>
    Мне интересно мнение Чебургена по поводу этого кода
     
  11. я не понимаю его смысла. вообще.
     
  12. Anonymous

    Anonymous Guest

    В данном коде есть функция quoteString которая обрабатывает строковые переменные для их использования в запросах
    ОН ТОЖЕ КРИВОЙ?
     
  13. мне всегда казалось, что для обработки переменных для их использования в запросах служит функция mysql_real_escape_string. Ну, или addslashes, на худой конец.
     
  14. Anonymous

    Anonymous Guest

    И вот опять у меня гордость за наших русских программистов – которые утверждают что наши зарубежные коллеги пишут куча бессмысленного кода в своих проектах а точнее в ADODB Library for PHP4
     
  15. На мой личный взгляд, все эти опенсорс библиотеки - это огромные кучи мусора.
     
  16. Anonymous

    Anonymous Guest

    brodyaga, в который раз у меня грусть за тебя — ты в который раз вырвал чужой код из контекста, и опять не понимаешь смысла функций, там используемых...
     
  17. Anonymous

    Anonymous Guest

    Чебурген, они этой «кучей мусора» просто пытаются реализовать максимальную совместимость, и я их за это не виню. Но человек, совершенно не понимающий, о чем говорит, вообще просто выводит меня из себя!
     
  18. Это не максимальная совместимость. Это мусор.
     
  19. Anonymous

    Anonymous Guest

    Хех. Вырвал из либы с плейсхолдерами, автоматически применяется ко всем параметрам для WHERE
    PHP:
    1. <?php
    2. function quote_param($a)
    3.     {
    4.         return preg_match('/^\d+$/', $a)? $a : "'".addslashes($a)."'";
    5.     }
    6. ?>
     
  20. непонятно, зачем.
    когда можно просто $a="'".addslashes($a)."'";

    не говоря уже о том, что это годится только для тех параметров, которые пишутся справа от знака равно
     
  21. Anonymous

    Anonymous Guest

    Чебурген, они для них и используются. С остальными параметрами принцип работы и их передача чуть отличаются.
    Я знаю твою позицию, что сэкономленные миллисекунды на преобразования типов ничего не значат )
     
  22. наоборот. потраченные на разбор регом ;-)

    но, на самом деле, гораздо важнее не это а то, что там стоит Addslashes, а не mysql_real_escape_string, как должно быть.
     
  23. Anonymous

    Anonymous Guest

    Чебурген, неа. Она у меня не только в MySQL используется, на работе у меня php_mysql вообще не подключен и эта же функция экранирует их для работы с Ораклом, с которым кстати type casting в целочисленных параметрах не работает, по крайней мере, в нашей версии сервера, поэтому и проверяется тип параметра. Достаточная аргументация? =)
     
  24. тогда надо писать две ветки.
    если у тебя для оракла используется Addslashes - это не повод с MySQL работать неправильно
     
  25. а вообще я не понимаю прикола этих библиотек, которые используются "не только в MySQL".
    Запросы-то все равно разные