[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: использование mysql_real_escape_string в PDO
IPnex
Приветствую!
Решил потихоньку переходить на 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)
А если так:

Можно и так.
Так даже более понятно, визуально, что к чему.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.