/** * @param string $table * @param array $data * * @return bool|int */ protected final function insert($table, array $data) { if (empty($data)) { return false; } $keys = array_keys($data); $sql = 'INSERT INTO ' . $table . ' (' . implode(', ', $keys) . ') VALUES (:' . implode(', :', $keys) . ');'; $query = $this->pdo->prepare($sql); foreach ($data as $key => $value) { $query->bindValue(':' . $key, $data[$key]); } $query->execute(); $insert = $query->rowCount(); if ($insert) { return (int) $this->pdo->lastInsertId(); } return false; }
/** * Saves a set of data to the table * This function will either insert or update, depending on if the entity passed already has an identifier set. The * generated/passed ID will be returned. * * @param object|array $data Data to save * @param string $table Table to save to * @param string $identifierColumn Identifier column to work against * @return int|string */ public function save($data, $table, $identifierColumn = 'id') { $data = $this->convertToArray($data); if (!empty($data[$identifierColumn])) { $update = $this->queryHandler->newUpdate(); $update->table($table)->cols(array_keys($data))->where($identifierColumn . ' = :' . $identifierColumn)->bindValues($data); $this->db->perform($update->__toString(), $update->getBindValues()); return $data[$identifierColumn]; } else { $insert = $this->queryHandler->newInsert(); $insert->into($table)->cols(array_keys($data))->bindValues($data); $this->db->perform($insert->__toString(), $insert->getBindValues()); $name = $insert->getLastInsertIdName($identifierColumn); return $this->db->lastInsertId($name); } }