PHP PDO: подготовить постановку вопроса - PullRequest
0 голосов
/ 15 января 2011

Да. Поэтому я использую PDO lib для подключения и связи с базой данных (MySQL)

Так что теперь, когда я привожу пример обновления столбца «bla», это выглядит так:

$sql = $connect->prepaer("UPDATE users SET bla='bla' WHERE id = $USER AND age =:age");
$sql->bindValue(":age", $age);
$sql->execute();

Теперь, если вы видите, я связал значение: только возраст, а не $ USER.

Я связал все остальные значения, кроме $ USER, во всех других моих запросах тоже.

$ USER - это идентификатор пользователя, с которым вы вошли в систему.

Интересно, смогу ли я защитить переменную $ USER, если существует что-то вроде escape-строки для этого, как вы могли бы сделать с mysql_ * (mysql_real_escape_string)?.

В противном случае мне потребуется отредактировать все мои запросы и добавить bindValue (: user, $ USER) ...

Ответы [ 3 ]

2 голосов
/ 15 января 2011

Ну, вы, вероятно, можете использовать любую из доступных функций и методов escape, но вопрос в том, почему?Конечно, может быть сложно найти все ваши запросы, но я бы сказал, что это очень странная вещь - полу-параметризовать ваши запросы.Просто добавьте привязку, пожалуйста;)

Тем не менее, в чем проблема mysql_real_escape_string ()?Если вы действительно стремитесь к быстрому взлому, просто добавьте это в ваше строение строк, и вы можете играть:).

Но опять же, просто приложите усилия, чтобы добавить связку.пожалуйста?Будущее тебя отблагодарит.

1 голос
/ 15 января 2011

PDO: quote () , но лучшее, что вы можете сделать, это связать это значение тоже.

1 голос
/ 15 января 2011

Стоит в любом случае изменить пользователя, чтобы сделать его последовательным.Это может быть дополнительной работой, но в долгосрочной перспективе это будет стоить.

Кроме того, просто если вы не знаете - вы можете передать массив параметров в функцию Execute вместо использования bindValue().У меня лично есть класс базы данных-оболочки, поэтому мой вызов обновления выглядит так:

$ db-> Update ("ОБНОВЛЕНИЕ пользователей SET bla =? WHERE id =? AND age =?", Array ('bla'), $ USER, age));

Выглядит намного лучше IMO.

Тогда в моем классе я просто вызываю prepare для SQL и Execute для параметра array.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...