function saveBook($blog_id, array $item)
{
/** @var $wpdb \wpdb */
global $wpdb;
unset($item['users_id'], $item['blogs_id'], $item['deleted']);
// Don't allow spoofing
$data = array('users_id' => $this->userId, 'blogs_id' => $blog_id, 'deleted' => 0);
$format = array('users_id' => $this->dbColumns['users_id'], 'blogs_id' => $this->dbColumns['blogs_id'], 'deleted' => $this->dbColumns['deleted']);
foreach ($item as $key => $val) {
if (isset($this->dbColumns[$key])) {
$data[$key] = $val;
$format[$key] = $this->dbColumns[$key];
}
}
// INSERT ... ON DUPLICATE KEY UPDATE
// @see http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
$args = array();
$sql = "INSERT INTO {$this->dbTable} ( ";
foreach ($data as $key => $val) {
$sql .= "`{$key}`, ";
}
$sql = rtrim($sql, ', ') . ' ) VALUES ( ';
foreach ($format as $key => $val) {
$sql .= $val . ', ';
$args[] = $data[$key];
}
$sql = rtrim($sql, ', ') . ' ) ON DUPLICATE KEY UPDATE ';
$i = 0;
foreach ($data as $key => $val) {
if ('users_id' == $key || 'blogs_id' == $key) {
continue;
}
$sql .= "`{$key}` = {$format[$key]}, ";
$args[] = $val;
++$i;
}
$sql = rtrim($sql, ', ');
if (!$i) {
$sql .= ' users_id = users_id ';
// Do nothing
}
$sql = $wpdb->prepare($sql, $args);
return $wpdb->query($sql);
}