Вставить / обновить вспомогательную функцию с помощью PDO - PullRequest
13 голосов
/ 23 сентября 2010

У меня есть очень простая вспомогательная функция для создания оператора SET для традиционного простого драйвера mysql:

function dbSet($fields) {
  $set='';
  foreach ($fields as $field) {
    if (isset($_POST[$field])) {
      $set.="`$field`='".mysql_real_escape_string($_POST[$field])."', ";
    }
  }
  return substr($set, 0, -2); 
}

используется вот так

$id = intval($_POST['id']);
$fields = explode(" ","name surname lastname address zip fax phone");
$_POST['date'] = $_POST['y']."-".$_POST['m']."-".$_POST['d'];
$query  = "UPDATE $table SET ".dbSet($fields)." stamp=NOW() WHERE id=$id";

делает код довольно СУХИМ и легким, но в то же время гибким.

Я должен спросить, хочет ли кто-нибудь разделить подобную функцию, используя функцию подготовленных операторов PDO?

Я все еще сомневаюсь, как это сделать.
Существует ли прямой и простой способ использовать подготовленные операторы PDO для вставки данных? В какой форме это должно быть? Помощник строителя запросов? Или вставить запрос помощника? Какие параметры это должно принять?

Я надеюсь, что это может быть достаточно легко, чтобы быть использован в качестве ответа здесь, на SO. Потому что в каждой теме мы видим рекомендации по использованию готовых операторов, но нет ни одного хорошего примера. Я имею в виду пример из реальной жизни. Я считаю, что набирать bind_param () 20 раз - не очень хороший стиль программирования. И даже 20 вопросительных знаков тоже.

Ответы [ 11 ]

0 голосов
/ 23 сентября 2010

Ссылка: Как я могу предотвратить внедрение SQL в PHP?

$preparedStatement = $db->prepare('SELECT * FROM employees WHERE name = :name');
$preparedStatement->execute(array(':name' => $name));
$rows = $preparedStatement->fetchAll();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...