Выражение запроса на запись с использованием класса базы данных - PullRequest
0 голосов
/ 24 марта 2012

Как мне переписать эту часть запроса в плагине expressionengine

$query = "UPDATE {$table} SET ";
foreach ($original_record as $key => $value) {
    if ($key != $id_field) {
        $query .= '`'.$key.'` = "'.str_replace('"','\"',$value).'", ';
    }
} 
$query = substr($query,0,strlen($query)-2); # lop off the extra trailing comma
$query .= " WHERE {$id_field}={$newid}";
mysql_query($query);

Я попробовал следующее, но неожиданно появляется ошибка ; в первой строке

$query = $this->EE->db->query("UPDATE exp_channel_titles SET ";
foreach ($original_record1 as $key => $value) {
    if ($key != $id_field) {
        $query .= '`'.$key.'` = "'.str_replace('"','\"',$value).'", ';
    }
}
$query = substr($query,0,strlen($query)-2); # lop off the extra trailing comma
$query .= "WHERE entry_id={$newid}");
mysql_query($query); // Is this needed or should i remove it.

1 Ответ

2 голосов
/ 26 марта 2012

Использование встроенных функций EE (гораздо проще и проще для чтения):

$this->EE =& get_instance();

$query = array();
foreach ($original_record as $key => $value) {
    if ($key != $id_field) {
        $query[$key] = str_replace('"','\"',$value);
    }
} 
$this->EE->db->where('entry_id', $newid);
$this->EE->db->update($table, $query);

Но чтобы объяснить, почему ваш код не работает;

$this->EE->db->query

Это EEфункция для запуска запроса, поэтому ваш запрос должен быть построен в виде строки, прежде чем передать его этому.так что ...

$query = "UPDATE exp_channel_titles SET ";
foreach ($original_record1 as $key => $value) {
    if ($key != $id_field) {
        $query .= '`'.$key.'` = "'.str_replace('"','\"',$value).'", ';
    }
}
$query = substr($query,0,strlen($query)-2); # lop off the extra trailing comma
$query = " WHERE entry_id={$newid}";
$queryResults = $this->EE->db->query($query);
...