Textpattern - на русском языке

форум общения русскоязычных пользователей CMS Текстпаттерн

Вы не зашли.

#1 13-01-2006 17:28:16

coyote
буки
Откуда: Moscow
Зарегистрирован: 05-01-2006
Сообщений: 9

Некорректая работа функции safe_upsert()

У меня вопрос по работе функции safe_upsert.
Как понимаю она должна апдейтить данные если выполняется WHERE и инсертить их в противном случае.
Вот код этой функции:

Код:

// insert or update
    function safe_upsert($table,$set,$where,$debug='') 
    {
        // FIXME: lock the table so this is atomic?
        $r = safe_update($table, $set, $where, $debug);
        if ($r and mysql_affected_rows())
            return $r;
        else
            return safe_insert($table, join(', ', array($where, $set)), $debug);
    }

Во-первых, она у меня вообще не работает.
Во вторых кажется сомнительным фрагмент : return safe_insert($table, join(', ', array($where, $set)), $debug);
Тут получается вызывается INSERT INTO $table VALUES $where, $set, где $where - логической выражение, что полная фигня.
Короче, исправил у себя это на

Код:

return safe_insert($table, $set, $debug);

safe_upsert() стала выполняться, но только инсертить данные, а не обновлять.
Это мой код вызова функции

Код:

 safe_upsert("iching_heks",
    "trans_id=$trans_id, heks_num=$heks_num, name='".$heks_name."', body='".$heks_body."'", 
    "(trans_id=$trans_id AND heks_num=$heks_num)",1);

Неактивен

 

#2 14-01-2006 11:53:13

Nicck
ферт
Откуда: Ижевск
Зарегистрирован: 11-05-2005
Сообщений: 536
Вебсайт

Re: Некорректая работа функции safe_upsert()

Она нигде не используется, похоже черновик. Я б её не использовал, вдруг её поправят в след версиях и она будет работать несколько иначе и использоваться в системе.

Неактивен

 

Board footer

RSS   Rambler's Top100
Powered by PunBB
Textpattern.ru