Согласно этой теме: https://codereview.stackexchange.com/questions/29362/very-simple-php-pdo-class люди обычно говорят, что глупо создавать пользовательские обработчики запросов PDO, которые мне очень трудно понять.Почему глупо создавать пользовательские обработчики запросов PDO?
Например, в моих проектах я предпочитаю иметь класс/функцию, чтобы делать то, что я делаю все время, быстрее для меня.
Например, когда вам нужно выполнять простые обновления в таблице, я создал эту функцию, которую я использую все время:
function UpdateData($table, $data, $where, $params=array()) {
$sql = 'UPDATE `' . tbl_prefix.$table . '` SET ';
foreach($data as $name => $value) {
$params[':' . $name] = $value;
$runs++;
$sql .= "`$name` = :" . $name;
if(end($data) !== $value) // if not last run
$sql .= ',';
}
if(!is_array($where)) {
$sql .= ' ' . $where; // insert where clause
} else {
// Array format can be used
$sql .= ' WHERE';
foreach($where as $argument => $value) {
$params[':where_'.$argument] = $value;
$num++;
$sql .= " `" . $argument . "` = :where_" . $argument . " ";
if(end($where) !== $value)
$sql .= ' AND';
}
}
$query = doQuery($sql, $params); // do the update
if($query)
return true;
}
И doQuery
(который я использую, когда я хочу база запросов):
function doQuery($query, $params=array()) {
global $db;
try {
$result = $this->$db->prepare($query);
$result->execute($params);
$result->setFetchMode(PDO::FETCH_ASSOC);
return $result;
} catch(PDOException $ex) {
$real_query = $query;
foreach($params as $name => $value) {
$real_query = str_replace($name, '\''.$value.'\'', $real_query);
}
SystemLog($ex->GetMessage(), array('real_query' => $real_query, 'query' => $query), 1); // log error
}
return false;
}
Есть ли что-то не так с этим? Мне это очень полезно.
некоторый код, были выведены из сценариев для упрощения кода
Если это вам полезно, то идите на это. Вы создали утилиту, которую вы повторно используете в своих проектах, что отрицает аргумент принятого ответа о повторном использовании. В то время как я получаю то, что он говорит, он может ссылаться на создание массивного класса абстракции или что-то еще, а не только на несколько вспомогательных методов. В любом случае, ваш проект должен соответствовать вашим потребностям. Если вы достаточно знаете об этом материале, чтобы даже сделать эти 2 помощника выше, вы, вероятно, будете в безопасности использовать их. –