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

source: OpenPNE/branches/takanashi/prj_takanashi3/webapp/lib/db/common.php @ 1071

Last change on this file since 1071 was 136, checked in by ogawa, 15 years ago

SQLチューニング

File size: 4.0 KB
Line 
1<?php
2/**
3 * @copyright 2005-2006 OpenPNE Project
4 * @license   http://www.php.net/license/3_01.txt PHP License 3.01
5 */
6
7$GLOBALS['_OPENPNE_DB_LIST'] = array();
8
9function &db_get_instance($name = 'main', $readonly = false)
10{
11    global $_OPENPNE_DB_LIST;
12
13    if (empty($_OPENPNE_DB_LIST[$name])) {
14        if (!$dsn = db_get_dsn($name)) {
15            if ($name == 'main') {
16                return false;
17            } else {
18                return db_get_instance();
19            }
20        }
21        if ($readonly) {
22            $_OPENPNE_DB_LIST[$name] =& new OpenPNE_DB($dsn);
23        } else {
24            $_OPENPNE_DB_LIST[$name] =& new OpenPNE_DB_Writer($dsn);
25        }
26    }
27    return $_OPENPNE_DB_LIST[$name];
28}
29
30function db_get_dsn($name = 'main')
31{
32    global $_OPENPNE_DSN_LIST;
33
34    if (empty($_OPENPNE_DSN_LIST[$name])) {
35        return false;
36    }
37    $item = $_OPENPNE_DSN_LIST[$name];
38
39    if (empty($item['dsn'])) {
40        // priority に応じた確率で1件取得
41        $entries = array();
42        foreach ($item as $i) {
43            if (empty($i['dsn'])) continue;
44
45            $p = !empty($i['priority']) ? intval($i['priority']) : 1;
46            $entries = array_pad($entries, count($entries) + $p, $i);
47        }
48        if ($entries) {
49            $key = array_rand($entries);
50            $item = $entries[$key];
51        }
52    }
53
54    return $item['dsn'];
55}
56
57function db_get_one($sql, $params = array())
58{
59    $reader =& db_get_instance('main_reader', true);
60    return $reader->get_one($sql, $params);
61}
62
63function db_get_row($sql, $params = array())
64{
65    $reader =& db_get_instance('main_reader', true);
66    return $reader->get_row($sql, $params);
67}
68
69function db_get_col($sql, $params = array())
70{
71    $reader =& db_get_instance('main_reader', true);
72    return $reader->get_col($sql, $params);
73}
74
75function db_get_col_limit($sql, $from, $count, $params = array())
76{
77    $reader =& db_get_instance('main_reader', true);
78    return $reader->get_col_limit($sql, $from, $count, $params);
79}
80
81function db_get_col_page($sql, $page, $count, $params = array())
82{
83    $reader =& db_get_instance('main_reader', true);
84    return $reader->get_col_page($sql, $page, $count, $params);
85}
86
87function db_get_assoc($sql, $params = array())
88{
89    $reader =& db_get_instance('main_reader', true);
90    return $reader->get_assoc($sql, $params);
91}
92
93function db_get_assoc_limit($sql, $from, $count, $params = array())
94{
95    $reader =& db_get_instance('main_reader', true);
96    return $reader->get_assoc_limit($sql, $from, $count, $params);
97}
98
99function db_get_all($sql, $params = array())
100{
101    $reader =& db_get_instance('main_reader', true);
102    return $reader->get_all($sql, $params);
103}
104
105function db_get_all_limit($sql, $from, $count, $params = array())
106{
107    $reader =& db_get_instance('main_reader', true);
108    return $reader->get_all_limit($sql, $from, $count, $params);
109}
110
111function db_get_all_page($sql, $page, $count, $params = array())
112{
113    $reader =& db_get_instance('main_reader', true);
114    return $reader->get_all_page($sql, $page, $count, $params);
115}
116
117function db_quote($str)
118{
119    $db =& db_get_instance('main_reader', true);
120    return $db->quote($str);
121}
122
123function db_escapeIdentifier($str)
124{
125    return OpenPNE_DB::escapeIdentifier($str);
126}
127
128function db_query($sql, $params = array())
129{
130    $db =& db_get_instance();
131    return $db->query($sql, $params);
132}
133
134function db_insert($table_name, $fields_values, $pkey = null)
135{
136    if (is_null($pkey)) { // primary key 自動生成
137        $pkey = $table_name . '_id';
138    }
139    $db =& db_get_instance();
140    return $db->insert($table_name, $fields_values, $pkey);
141}
142
143function db_update($table_name, $fields_values, $where)
144{
145    $db =& db_get_instance();
146    return $db->update($table_name, $fields_values, $where);
147}
148
149function db_affected_rows()
150{
151    $db =& db_get_instance();
152    return $db->affectedRows();
153}
154
155function db_now()
156{
157    return date('Y-m-d H:i:s');
158}
159
160/**
161 * MySQL hint
162 */
163function db_mysql_hint($hint)
164{
165    if (OPENPNE_USE_MYSQL_HINT) {
166        return ' /*! ' . $hint . ' */ ';
167    } else {
168        return '';
169    }
170}
171
172?>
Note: See TracBrowser for help on using the repository browser.