ここの情報は古いです。ご理解頂いた上でお取り扱いください。

source: OpenPNE/branches/stable-2.10.x/webapp/lib/OpenPNE/DB/Writer.php @ 4595

Last change on this file since 4595 was 4595, checked in by ebihara, 13 years ago

#1477:OpenPNE_DB_Writer::insert()で、OpenPNE_DB_Writer::nextId()が失敗した場合を想定していないコードがあったのを修正

File size: 1.7 KB
Line 
1<?php
2/**
3 * @copyright 2005-2007 OpenPNE Project
4 * @license   http://www.php.net/license/3_01.txt PHP License 3.01
5 */
6
7require_once 'OpenPNE/DB.php';
8
9class OpenPNE_DB_Writer extends OpenPNE_DB
10{
11    function OpenPNE_DB_Writer($dsn)
12    {
13        parent::OpenPNE_DB($dsn);
14    }
15
16    function &query($sql, $params = array())
17    {
18        return $this->db->query($sql, $params);
19    }
20
21    function insert($table, $fields_values, $pkey = '')
22    {
23        $seq_name = sprintf('%s_%s', $table, $pkey);
24        if ($pkey && ($id = $this->nextId($seq_name))) {
25            if (DB::isError($id)) {
26                return false;
27            }
28            $fields_values = array($pkey => $id) + $fields_values;
29        }
30
31        $res = $this->db->autoExecute($table, $fields_values, DB_AUTOQUERY_INSERT);
32        if (DB::isError($res)) {
33            return false;
34        }
35        return $this->insertId($id);
36    }
37
38    function nextId($seq_name = '', $ondemand = true)
39    {
40        if ($this->db->phptype == 'mysql') {
41            return null;
42        } else {
43            return $this->db->nextId($seq_name, $ondemand);
44        }
45    }
46
47    function insertId($id = null)
48    {
49        if ($this->db->phptype == 'mysql') {
50            return $this->db->getOne('SELECT LAST_INSERT_ID()');
51        } else {
52            return $id;
53        }
54    }
55
56    function update($table, $fields_values, $where)
57    {
58        $where = $this->makeWhereClause($where);
59        $res = $this->db->autoExecute($table, $fields_values, DB_AUTOQUERY_UPDATE, $where);
60        if (DB::isError($res)) {
61            return false;
62        }
63        return true;
64    }
65
66    function affectedRows()
67    {
68        return $this->db->affectedRows();
69    }
70}
71
72?>
Note: See TracBrowser for help on using the repository browser.