Решил выложить класс, расширяющий стандартный класс для работы с базами данных PDO Как создавать базу написано в мануале при использовании insert и update автоматически экранирует переменные, например $values = array('row1'=>'value1', 'row2'=>'value2'); $insertId = $db->insert('table', $values); иногда можно сократить, если переменные так же как поля в бд называются $insertId = $db->insert('table', compact('row1', 'row2')); и конечно же все фичи PDO работают. PHP: <?php class db extends PDO { # запрос без результатов (alias exec) function e() { $params = func_get_args(); $ret = call_user_func_array(array($this,'exec'), $params); return $ret; } # alias query function q() { $params = func_get_args(); return call_user_func_array(array($this,'query'), $params); } # значение function value($q) { $ret = $this->line($q, 0); return $ret ? current($ret) : $ret; } # строка function line($q, $assoc = 1) { $sth = $this->prepare($q); $sth->execute(); $arr = $sth->fetch($assoc ? PDO::FETCH_ASSOC : PDO::FETCH_NUM); unset($sth); return $arr; } # массив function arr($q, $assoc = 1) { $sth = $this->prepare($q); $sth->execute(); $arr = $sth->fetchAll($assoc ? PDO::FETCH_ASSOC : PDO::FETCH_NUM); unset($sth); return $arr; } # столбец function row($q) { $arr = $this->arr($q); if (isset($arr[0]) and is_array($arr[0])) foreach($arr as &$one) $one = reset($one); return $arr; } # хэш function ass($q) { $arr = array(); foreach($this->arr($q, 0) as $one) $arr[$one[0]] = $one[1]; return $arr; } # private function quoteArrayParams($values) { foreach ($values as &$value) { if (is_null($value)) $value = 'NULL'; elseif (!is_numeric($value)) $value = $this->quote($value); } return $values; } # update function update($table, $values = array(), $where = '', $limit = null) { # значения $values = $this->quoteArrayParams($values); foreach ($values as $key=>&$value) $value = "$key = $value"; $values = implode(', ', $values); # where $where = empty($where) ? '' : "WHERE $where"; # limit $limit = is_null($limit) ? '' : "LIMIT $limit"; $sql = "UPDATE $table SET $values $where $limit;"; return $this->e($sql); } # insert function insert($table, $values = array()) { $values = $this->quoteArrayParams($values); $keys = implode(', ', array_keys($values)); $values = implode(', ', $values); $sql = "INSERT INTO $table ($keys) VALUES ($values)"; $insert = $this->e($sql); if (!$insert) return $insert; return $this->lastInsertId(); } # delete function delete($table, $where = null, $limit = null) { $where = is_null($where) ? '' : "WHERE $where"; $limit = is_null($limit) ? '' : "LIMIT $limit"; $q = "DELETE FROM $table $where $limit"; return $this->e($q); } }