Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Закрытая темаСоздание новой темыСоздание опроса

> использование mysql_real_escape_string в PDO
IPnex  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пользователь
**

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 98
Пользователь №: 20468
На форуме: 7 лет, 6 месяцев, 10 дней
Карма:




Приветствую!
Решил потихоньку переходить на PHP PDO и возник такой вопрос, есть ли смысл использовать функцию mysql_real_escape_string в PDO запросах?
Дело в том, что пока не получается это сделать, т.к. эта функция используется только при активном соединении с БД и если даже прогонять непосредственно в execute, то выдает ту же ошибку с подключением к БД.

Или можно просто использовать подготовленные запросы и этого будет достаточно для защиты от sql инъекций?



Спустя 1 час, 9 минут, 58 секунд (28.01.2012 - 19:25) Winston написал(а):
mysql_real_escape_string будет работать только при традиционном соединении mysql_connect
А для PDO лучше делать так
$sql = "INSERT INTO table (field1, field2) VALUES (?, ?)";
$sth = $dbh->prepare($sql);
$sth->execute(array($var1, $var2));

Об остальном позаботится PDO.

Спустя 38 минут, 26 секунд (28.01.2012 - 20:04) IPnex написал(а):
Цитата (Winston @ 28.01.2012 - 19:25)
mysql_real_escape_string будет работать только при традиционном соединении mysql_connect
А для PDO лучше делать так
<pre class="sh_sourceCode" rel="php"><span class="sh_variable">$sql</span> <span class="sh_symbol">=</span> <span class="sh_string">"INSERT INTO table (field1, field2) VALUES (?, ?)"</span><span class="sh_symbol">;</span>
<span class="sh_variable">$sth</span> <span class="sh_symbol">=</span> <span class="sh_variable">$dbh</span><span class="sh_symbol">-></span><span class="sh_function">prepare</span><span class="sh_symbol">(</span><span class="sh_variable">$sql</span><span class="sh_symbol">);</span>
<span class="sh_variable">$sth</span><span class="sh_symbol">-></span><span class="sh_function">execute</span><span class="sh_symbol">(</span><span class="sh_function">array</span><span class="sh_symbol">(</span><span class="sh_variable">$var1</span><span class="sh_symbol">,</span> <span class="sh_variable">$var2</span><span class="sh_symbol">));</span></pre>
Об остальном позаботится PDO.

А если так:

$sql = "INSERT INTO table (field1, field2) VALUES (:var1, :var2)";
$sth = $dbh->prepare($sql);
$params = array (':var1' => $var1, ':var2' => $var2);
$sth->execute($params);

Спустя 3 минуты, 44 секунды (28.01.2012 - 20:08) Игорь_Vasinsky написал(а):
суть не в этом. тебе ответили - в PDO SQL инъекции отловятся в самой PDO

Спустя 48 секунд (28.01.2012 - 20:08) Winston написал(а):
Цитата (IPnex @ 28.01.2012 - 19:04)
А если так:

Можно и так.
Так даже более понятно, визуально, что к чему.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Закрытая темаСоздание новой темыСоздание опроса