Xwab
Форумыnavigate_nextПрограммирование на PHP

PDO - помощь
Сообщения
Sandr

Подскажите по 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'];

28 Авг 2011, 16:07
Дмитрий

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'];

28 Авг 2011, 17:34
Danis92

Sandr,
$sql = "SELECT * FROM `users` WHERE `name` = $name";
foreach ($dbh->query($sql) as $row)
echo $row['name'];
Тут ничего защищать не нужно ,ты же выводишь просто из базы данные ,защищать нужно при выборке и добавлении данных из базы

28 Авг 2011, 17:42
Дмитрий

Danis92, все равно нужно фильтровать.

28 Авг 2011, 17:51
Danis92

Дмитрий, о да ошибся ) переменную $name не заметил ,только там не видно что она из GET_ или POST_ взята так что может и не надо

28 Авг 2011, 17:59
Framework

Фильтруйте абсолютно всё

28 Авг 2011, 17:59
manyrus

Дмитрий, а на php.net зайти не можешь? Там всё расписано, сейчас отвечу на все твои последние вопросы...
добавлено спустя 51 секунду:
Фильтровать, если ты подготавливаешь запрос, не нужно. Только на выводе xss фильтруй.
добавлено спустя 2 минуты:
Тьфу, просмотрел, на все вопросы ответили  . Жаль.
добавлено спустя 24 секунды:
На сайте php.net очень хороший мануал - http://ru.php.net/pdo

28 Авг 2011, 19:53
Framework

manyrus, А всё потому что религия не позволяет
В первую очередь надо искать на офф сайте... Золотое правило

28 Авг 2011, 19:56
manyrus

RiO, rowCount возвращает число задевших полей при использование DELETE, INSERT, или UPDATE, а не только при SELECT.
Framework, всё-всё надо фильтровать, и при входе и при выходе, так же секьюрно, никто не ломанёт.
добавлено спустя 1 минуту:
Framework, ты что, там английский

28 Авг 2011, 19:59
RiO

manyrus, а что я не так написал ? Что-то я не понимаю

28 Авг 2011, 20:01
Ответить на тему