Подскажите по 2м вопросам
1. Есть код
$sql = "SELECT * FROM `users` WHERE `name` = $name";
foreach ($dbh->query($sql) as $row)
echo $row['name'];
Как защититься от sql-иньекции в данном случае?
2. подскажите аналог этого кода в пдо:
$res = mysql_fetch_array(mysql_query("SELECT * FROM `users` WHERE id = $x"));
echo $res['name'];
Sandr, пробуй:
1)
$res = $dbh->prepare("SELECT * FROM `users` WHERE `name` = :name");
$res->bindParam(':name', $name, PDO::PARAM_STR);
$res->execute();
foreach ($res as $row) {
echo $row['name'];
}
2)
$query = $dbh->query("SELECT * FROM `users` WHERE id = $x");
$res = $query->fetch(PDO::FETCH_ASSOC);
echo $res['name'];
Sandr,
$sql = "SELECT * FROM `users` WHERE `name` = $name";
foreach ($dbh->query($sql) as $row)
echo $row['name'];
Тут ничего защищать не нужно ,ты же выводишь просто из базы данные ,защищать нужно при выборке и добавлении данных из базы
Дмитрий, о да ошибся ) переменную $name не заметил ,только там не видно что она из GET_ или POST_ взята так что может и не надо
28 Авг 2011, 17:59Дмитрий, а на php.net зайти не можешь? Там всё расписано, сейчас отвечу на все твои последние вопросы...
добавлено спустя 51 секунду:
Фильтровать, если ты подготавливаешь запрос, не нужно. Только на выводе xss фильтруй.
добавлено спустя 2 минуты:
Тьфу, просмотрел, на все вопросы ответили
. Жаль.
добавлено спустя 24 секунды:
На сайте php.net очень хороший мануал - http://ru.php.net/pdo
manyrus, А всё потому что религия не позволяет
В первую очередь надо искать на офф сайте... Золотое правило 
RiO, rowCount возвращает число задевших полей при использование DELETE, INSERT, или UPDATE, а не только при SELECT.
Framework, всё-всё надо фильтровать, и при входе и при выходе, так же секьюрно, никто не ломанёт.
добавлено спустя 1 минуту:
Framework, ты что, там английский 