数据库您现在的位置是:首页 > 博客日志 > 数据库

php 如何将mysql更改为mysqli?

<a href='mailto:'>微wx笑</a>的头像微wx笑 2023-01-06数据库72 3 0关键字: mysql  mysqli  

今天在解决 Warning: mysqli_multi_query() expects parameter 1 to be mysqli 问题时,发现帝国CMS提供了两种数据库连接操作的方案,分别是 mysql和mysqli,可以在 e/class/db/

今天在解决 Warning: mysqli_multi_query() expects parameter 1 to be mysqli 问题时,发现帝国CMS提供了两种数据库连接操作的方案,分别是 mysql和mysqli,iBl无知

可以在 e/class/db/ 目录下找到两个相关的文件iBl无知

db_mysql.php 代码:iBl无知

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
<?php
define('InEmpireCMSDbSql',TRUE);
 
//------------------------- 数据库 -------------------------
 
//链接数据库
function do_dbconnect($dbhost,$dbport,$dbusername,$dbpassword,$dbname){
    global $ecms_config;
    $dblocalhost=$dbhost;
    //端口
    if($dbport)
    {
        $dblocalhost.=':'.$dbport;
    }
    $dblink=@mysql_connect($dblocalhost,$dbusername,$dbpassword);
    if(!$dblink)
    {
        echo"Cann't connect to DB!";
        exit();
    }
    //编码
    if($ecms_config['db']['dbver']>='4.1')
    {
        $q='';
        if($ecms_config['db']['setchar'])
        {
            $q='character_set_connection='.$ecms_config['db']['setchar'].',character_set_results='.$ecms_config['db']['setchar'].',character_set_client=binary';
        }
        if($ecms_config['db']['dbver']>='5.0')
        {
            $q.=(empty($q)?'':',').'sql_mode=\'\'';
        }
        if($q)
        {
            @mysql_query('SET '.$q,$dblink);
        }
    }
    @mysql_select_db($dbname,$dblink);
    return $dblink;
}
 
//关闭数据库
function do_dbclose($dblink){
    if($dblink)
    {
        @mysql_close($dblink);
    }
}
 
//设置编码
function do_DoSetDbChar($dbchar,$dblink){
    @mysql_query('set character_set_connection='.$dbchar.',character_set_results='.$dbchar.',character_set_client=binary;',$dblink);
}
 
//取得mysql版本
function do_eGetDBVer($selectdb=0){
    global $empire;
    if($selectdb&&$empire)
    {
        $getdbver=$empire->egetdbver();
    }
    else
    {
        $getdbver=@mysql_get_server_info();
    }
    return $getdbver;
}
 
//普通操作
function do_dbconnect_common($dbhost,$dbport,$dbusername,$dbpassword,$dbname=''){
    global $ecms_config;
    $dblocalhost=$dbhost;
    //端口
    if($dbport)
    {
        $dblocalhost.=':'.$dbport;
    }
    $dblink=@mysql_connect($dblocalhost,$dbusername,$dbpassword);
    return $dblink;
}
 
function do_dbquery_common($query,$dblink,$ecms=0){
    global $ecms_config;
    if($ecms==0)
    {
        $sql=mysql_query($query,$dblink);
    }
    else
    {
        $sql=mysql_query($query,$dblinkor die($ecms_config['db']['showerror']==1?str_replace($GLOBALS['dbtbpre'],'***_',mysql_error().'<br>'.$query):'DbError');
    }
    return $sql;
}
 
function do_dbfetch_common($sql){
    $r=mysql_fetch_array($sql);
    return $r;
}
 
function do_dblastid_common($dblink){
    $id=mysql_insert_id($dblink);
    if($id<0)
    {
        $sql=do_dbquery_common('SELECT last_insert_id() as total',$dblink);
        $r=do_dbfetch_common($sql);
        $id=$r['total'];
    }
    return $id;
}
 
//选择数据库
function do_eUseDb($dbname,$dblink,$query=0){
    if($query)
    {
        $usedb=do_dbquery_common('use `'.$dbname.'`',$dblink);
    }
    else
    {
        $usedb=@mysql_select_db($dbname,$dblink);
    }
    return $usedb;
}
 
 
 
//------------------------- 数据库操作 -------------------------
 
class mysqlquery
{
    var $dblink;
    var $sql;//sql语句执行结果
    var $query;//sql语句
    var $num;//返回记录数
    var $r;//返回数组
    var $id;//返回数据库id号
    //执行mysql_query()语句
    function query($query){
        global $ecms_config;
        $this->sql=mysql_query($query,return_dblink($query)) or die($ecms_config['db']['showerror']==1?str_replace($GLOBALS['dbtbpre'],'***_',mysql_error().'<br>'.$query):'DbError');
        return $this->sql;
    }
    //执行mysql_query()语句2
    function query1($query){
        $this->sql=mysql_query($query,return_dblink($query));
        return $this->sql;
    }
    //执行mysql_query()语句(选择数据库USE)
    function usequery($query){
        global $ecms_config;
        $this->sql=mysql_query($query,$GLOBALS['link']) or die($ecms_config['db']['showerror']==1?str_replace($GLOBALS['dbtbpre'],'***_',mysql_error().'<br>'.$query):'DbError');
        if($GLOBALS['linkrd'])
        {
            mysql_query($query,$GLOBALS['linkrd']);
        }
        return $this->sql;
    }
    //执行mysql_query()语句(操作数据库)
    function updatesql($query){
        global $ecms_config;
        $this->sql=mysql_query($query,return_dblink($query)) or die($ecms_config['db']['showerror']==1?str_replace($GLOBALS['dbtbpre'],'***_',mysql_error().'<br>'.$query):'DbError');
        return $this->sql;
    }
    //执行mysql_fetch_array()
    function fetch($sql)//此方法的参数是$sql就是sql语句执行结果
    {
        $this->r=mysql_fetch_array($sql);
        return $this->r;
    }
    //执行fetchone(mysql_fetch_array())
    //此方法与fetch()的区别是:1、此方法的参数是$query就是sql语句 
    //2、此方法用于while(),for()数据库指针不会自动下移,而fetch()可以自动下移。
    function fetch1($query)
    {
        $this->sql=$this->query($query);
        $this->r=mysql_fetch_array($this->sql);
        return $this->r;
    }
    //执行mysql_num_rows()
    function num($query)//此类的参数是$query就是sql语句
    {
        $this->sql=$this->query($query);
        $this->num=mysql_num_rows($this->sql);
        return $this->num;
    }
    //执行numone(mysql_num_rows())
    //此方法与num()的区别是:1、此方法的参数是$sql就是sql语句的执行结果。
    function num1($sql)
    {
        $this->num=mysql_num_rows($sql);
        return $this->num;
    }
    //执行numone(mysql_num_rows())
    //统计记录数
    function gettotal($query)
    {
        $this->r=$this->fetch1($query);
        return $this->r['total'];
    }
    //执行free(mysql_result_free())
    //此方法的参数是$sql就是sql语句的执行结果。只有在用到mysql_fetch_array的情况下用
    function free($sql)
    {
        mysql_free_result($sql);
    }
    //执行seek(mysql_data_seek())
    //此方法的参数是$sql就是sql语句的执行结果,$pit为执行指针的偏移数
    function seek($sql,$pit)
    {
        mysql_data_seek($sql,$pit);
    }
    //执行id(mysql_insert_id())
    function lastid()//取得最后一次执行mysql数据库id号
    {
        $this->id=mysql_insert_id($GLOBALS['link']);
        if($this->id<0)
        {
            $this->id=$this->gettotal('SELECT last_insert_id() as total');
        }
        return $this->id;
    }
    //返回影响数量(mysql_affected_rows())
    function affectnum()//取得操作数据表后受影响的记录数
    {
        return mysql_affected_rows($GLOBALS['link']);
    }
    //执行escape_string()函数
    function EDbEscapeStr($str){
        $str=mysql_real_escape_string($str);
        return $str;
    }
    //取得数据库版本
    function egetdbver()
    {
        $this->r=$this->fetch1('select version() as version');
        return $this->r['version'];
    }
}
?>

db_mysqli.php 代码:iBl无知

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
<?php
define('InEmpireCMSDbSql',TRUE);
 
//------------------------- 数据库 -------------------------
 
//链接数据库
function do_dbconnect($dbhost,$dbport,$dbusername,$dbpassword,$dbname){
    global $ecms_config;
    $dblocalhost=$dbhost;
    //端口
    if($dbport)
    {
        $dblocalhost.=':'.$dbport;
    }
    $dblink=@mysqli_connect($dblocalhost,$dbusername,$dbpassword);
    if(!$dblink)
    {
        echo"Cann't connect to DB!";
        exit();
    }
    //编码
    if($ecms_config['db']['dbver']>='4.1')
    {
        $q='';
        if($ecms_config['db']['setchar'])
        {
            $q='character_set_connection='.$ecms_config['db']['setchar'].',character_set_results='.$ecms_config['db']['setchar'].',character_set_client=binary';
        }
        if($ecms_config['db']['dbver']>='5.0')
        {
            $q.=(empty($q)?'':',').'sql_mode=\'\'';
        }
        if($q)
        {
            @mysqli_query($dblink,'SET '.$q);
        }
    }
    @mysqli_select_db($dblink,$dbname);
    return $dblink;
}
 
//关闭数据库
function do_dbclose($dblink){
    if($dblink)
    {
        @mysqli_close($dblink);
    }
}
 
//设置编码
function do_DoSetDbChar($dbchar,$dblink){
    @mysqli_query($dblink,'set character_set_connection='.$dbchar.',character_set_results='.$dbchar.',character_set_client=binary;');
}
 
//取得mysql版本
function do_eGetDBVer($selectdb=0){
    global $empire,$link;
    if($selectdb&&$empire)
    {
        $getdbver=$empire->egetdbver();
    }
    else
    {
        if($link)
        {
            $getdbver=@mysqli_get_server_info($link);
        }
        else
        {
            $getdbver='';
        }
    }
    return $getdbver;
}
 
//普通操作
function do_dbconnect_common($dbhost,$dbport,$dbusername,$dbpassword,$dbname=''){
    global $ecms_config;
    $dblocalhost=$dbhost;
    //端口
    if($dbport)
    {
        $dblocalhost.=':'.$dbport;
    }
    $dblink=@mysqli_connect($dblocalhost,$dbusername,$dbpassword);
    return $dblink;
}
 
function do_dbquery_common($query,$dblink,$ecms=0){
    global $ecms_config;
    if($ecms==0)
    {
        $sql=mysqli_query($dblink,$query);
    }
    else
    {
        $sql=mysqli_query($dblink,$queryor die($ecms_config['db']['showerror']==1?str_replace($GLOBALS['dbtbpre'],'***_',mysqli_error($dblink).'<br>'.$query):'DbError');
    }
    return $sql;
}
 
function do_dbfetch_common($sql){
    $r=mysqli_fetch_array($sql);
    return $r;
}
 
function do_dblastid_common($dblink){
    $id=mysqli_insert_id($dblink);
    if($id<0)
    {
        $sql=do_dbquery_common('SELECT last_insert_id() as total',$dblink);
        $r=do_dbfetch_common($sql);
        $id=$r['total'];
    }
    return $id;
}
 
//选择数据库
function do_eUseDb($dbname,$dblink,$query=0){
    if($query)
    {
        $usedb=do_dbquery_common('use `'.$dbname.'`',$dblink);
    }
    else
    {
        $usedb=@mysqli_select_db($dblink,$dbname);
    }
    return $usedb;
}
 
 
 
//------------------------- 数据库操作 -------------------------
 
class mysqlquery
{
    var $dblink;
    var $sql;//sql语句执行结果
    var $query;//sql语句
    var $num;//返回记录数
    var $r;//返回数组
    var $id;//返回数据库id号
    //执行mysql_query()语句
    function query($query){
        global $ecms_config;
        $this->sql=mysqli_query(return_dblink($query),$queryor die($ecms_config['db']['showerror']==1?str_replace($GLOBALS['dbtbpre'],'***_',mysqli_error(return_dblink($query)).'<br>'.$query):'DbError');
        return $this->sql;
    }
    //执行mysql_query()语句2
    function query1($query){
        $this->sql=mysqli_query(return_dblink($query),$query);
        return $this->sql;
    }
    //执行mysql_query()语句(选择数据库USE)
    function usequery($query){
        global $ecms_config;
        $this->sql=mysqli_query($GLOBALS['link'],$queryor die($ecms_config['db']['showerror']==1?str_replace($GLOBALS['dbtbpre'],'***_',mysqli_error($GLOBALS['link']).'<br>'.$query):'DbError');
        if($GLOBALS['linkrd'])
        {
            mysqli_query($GLOBALS['linkrd'],$query);
        }
        return $this->sql;
    }
    //执行mysql_query()语句(操作数据库)
    function updatesql($query){
        global $ecms_config;
        $this->sql=mysqli_query(return_dblink($query),$queryor die($ecms_config['db']['showerror']==1?str_replace($GLOBALS['dbtbpre'],'***_',mysqli_error(return_dblink($query)).'<br>'.$query):'DbError');
        return $this->sql;
    }
    //执行mysql_fetch_array()
    function fetch($sql)//此方法的参数是$sql就是sql语句执行结果
    {
        $this->r=mysqli_fetch_array($sql);
        return $this->r;
    }
    //执行fetchone(mysql_fetch_array())
    //此方法与fetch()的区别是:1、此方法的参数是$query就是sql语句 
    //2、此方法用于while(),for()数据库指针不会自动下移,而fetch()可以自动下移。
    function fetch1($query)
    {
        $this->sql=$this->query($query);
        $this->r=mysqli_fetch_array($this->sql);
        return $this->r;
    }
    //执行mysql_num_rows()
    function num($query)//此类的参数是$query就是sql语句
    {
        $this->sql=$this->query($query);
        $this->num=mysqli_num_rows($this->sql);
        return $this->num;
    }
    //执行numone(mysql_num_rows())
    //此方法与num()的区别是:1、此方法的参数是$sql就是sql语句的执行结果。
    function num1($sql)
    {
        $this->num=mysqli_num_rows($sql);
        return $this->num;
    }
    //执行numone(mysql_num_rows())
    //统计记录数
    function gettotal($query)
    {
        $this->r=$this->fetch1($query);
        return $this->r['total'];
    }
    //执行free(mysql_result_free())
    //此方法的参数是$sql就是sql语句的执行结果。只有在用到mysql_fetch_array的情况下用
    function free($sql)
    {
        mysqli_free_result($sql);
    }
    //执行seek(mysql_data_seek())
    //此方法的参数是$sql就是sql语句的执行结果,$pit为执行指针的偏移数
    function seek($sql,$pit)
    {
        mysqli_data_seek($sql,$pit);
    }
    //执行id(mysql_insert_id())
    function lastid()//取得最后一次执行mysql数据库id号
    {
        $this->id=mysqli_insert_id($GLOBALS['link']);
        if($this->id<0)
        {
            $this->id=$this->gettotal('SELECT last_insert_id() as total');
        }
        return $this->id;
    }
    //返回影响数量(mysql_affected_rows())
    function affectnum()//取得操作数据表后受影响的记录数
    {
        return mysqli_affected_rows($GLOBALS['link']);
    }
    //执行escape_string()函数
    function EDbEscapeStr($str){
        $str=mysqli_real_escape_string($GLOBALS['link'],$str);
        return $str;
    }
    //取得数据库版本
    function egetdbver()
    {
        $this->r=$this->fetch1('select version() as version');
        return $this->r['version'];
    }
}
?>

更多具体详细的应用,可以去下载 帝国CMS 的代码研究一下。iBl无知

EmpireCMS v7.5 FreeiBl无知

本文由 微wx笑 创作,采用 署名-非商业性使用-相同方式共享 4.0 许可协议,转载请附上原文出处链接及本声明。
原文链接:https://www.ivu4e.cn/blog/database/2023-01-06/1646.html

很赞哦! (7) 有话说 (0)

文章评论