форум общения русскоязычных пользователей CMS Текстпаттерн
Вы не зашли.
У меня вопрос по работе функции 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);
Неактивен