新聞中心
info'>php中有mysqli類,是嗎?$mysqli->info
本文所述的是一個(gè)在PHP中以mysqli方式連接數(shù)據(jù)庫(kù)的一個(gè)數(shù)據(jù)庫(kù)類實(shí)例,該數(shù)據(jù)庫(kù)類是從一個(gè)PHP的CMS中整理出來(lái)的,可實(shí)現(xiàn)PHP連接數(shù)據(jù)庫(kù)類,MySQLi版,兼容PHP4,對(duì)于有針對(duì)性需要的朋友可根據(jù)此代碼進(jìn)行優(yōu)化和修改。
創(chuàng)新互聯(lián)基于成都重慶香港及美國(guó)等地區(qū)分布式IDC機(jī)房數(shù)據(jù)中心構(gòu)建的電信大帶寬,聯(lián)通大帶寬,移動(dòng)大帶寬,多線BGP大帶寬租用,是為眾多客戶提供專業(yè)成都服務(wù)器托管報(bào)價(jià),主機(jī)托管價(jià)格性價(jià)比高,為金融證券行業(yè)服務(wù)器托管,ai人工智能服務(wù)器托管提供bgp線路100M獨(dú)享,G口帶寬及機(jī)柜租用的專業(yè)成都idc公司。
?
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
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
?php
#==================================================================================================
# Filename: /db/db_mysqli.php
# Note : 連接數(shù)據(jù)庫(kù)類,MySQLi版
#==================================================================================================
#[類庫(kù)sql]
class db_mysqli
{
var $query_count = 0;
var $host;
var $user;
var $pass;
var $data;
var $conn;
var $result;
var $prefix = "qingga
PHP數(shù)據(jù)庫(kù)操作之基于Mysqli的數(shù)據(jù)庫(kù)操作類庫(kù)
此類庫(kù)簡(jiǎn)單、易用,便于你自己修改和對(duì)功能的改善,能解決大部分
PHP
項(xiàng)目中執(zhí)行的
SQL
操作。
初步工作
首先,請(qǐng)大家下載這個(gè)類庫(kù)
M.class.php 再下載一個(gè)
Mysqli
連接數(shù)據(jù)庫(kù)的類庫(kù)
MysqliDb.class.php(打包下載地址)
新建一個(gè)
includes
的文件夾,將下載下來(lái)的兩個(gè)
class
文件,放進(jìn)去。
然后,請(qǐng)你在項(xiàng)目下創(chuàng)建一個(gè)
test.php
文件。注:UTF-8
文件格式
請(qǐng)先根據(jù)你機(jī)器的情況,填充以下代碼,用于連接數(shù)據(jù)庫(kù):
復(fù)制代碼
代碼如下:
header('Content-Type:text/html;Charset=utf-8');
define('ROOT_PATH',
dirname(__FILE__));
define('DB_HOST',
'localhost');
//數(shù)據(jù)庫(kù)服務(wù)器地址
define('DB_USER',
'root');
//數(shù)據(jù)庫(kù)用戶名
define('DB_PWD',
'×××');//數(shù)據(jù)庫(kù)密碼
define('DB_NAME',
'×××');
//數(shù)據(jù)庫(kù)名稱
define('DB_PORT',
'3306');
//數(shù)據(jù)庫(kù)端口
function
__autoload($className)
{
require_once
ROOT_PATH
.
'/includes/'.
ucfirst($className)
.'.class.php';
//自動(dòng)加載
class
文件
}
好了,上面的這些操作都是初步工作,下面正式進(jìn)入類庫(kù)的講解。
類庫(kù)講解
首先,我們得實(shí)例化
M.class.php,實(shí)例化很簡(jiǎn)單:
復(fù)制代碼
代碼如下:
$m
=
new
M();
//這步操作代表
M.class.php
中的所有功能都封裝在了變量
$m
中
注:
1、M類庫(kù)中的方法參數(shù)說(shuō)明,請(qǐng)到
M.class.php
文件中看詳細(xì)的注釋,這里不再進(jìn)行敘述。建議在學(xué)習(xí)的時(shí)候,對(duì)照著看下文件中的參數(shù)即注釋。
2、講解代碼中用到的數(shù)據(jù)庫(kù)結(jié)構(gòu)為:
復(fù)制代碼
代碼如下:
CREATE
TABLE
`user`
(
`id`
int(8)
unsigned
NOT
NULL
auto_increment,
`name`
varchar(50)
default
NULL,
`email`
varchar(100)
default
NULL,
`age`
smallint(3)
default
NULL,
`class_id`
int(8)
default
NULL,
`commit_time`
int(10)
default
NULL,
PRIMARY
KEY
(`id`),
KEY
`name`
(`name`)
)
ENGINE=MyISAM
DEFAULT
CHARSET=utf8
復(fù)制代碼
代碼如下:
CREATE
TABLE
`class`
(
`class_id`
int(8)
NOT
NULL
auto_increment,
`class_name`
varchar(100)
default
NULL,
PRIMARY
KEY
(`class_id`)
)
ENGINE=InnoDB
DEFAULT
CHARSET=utf8
并添加一條測(cè)試數(shù)據(jù)。
3、M類庫(kù)中,大部分方法都分兩中類型,即:SQL方法;拼接方法,具體在實(shí)例中可以看出
4、以下稱述中的
M
為
M.class.php
文件
方法1、Insert()
添加數(shù)據(jù)
Insert
方法的全部使用案例如下:
復(fù)制代碼
代碼如下:
$m-Insert("user",
null,
array('焦焦',
'liruxing1715@sina.com',
'23',
time()));
//
拼接方法:往`user`表中添加一條數(shù)據(jù),返回值為數(shù)據(jù)庫(kù)影響的行數(shù)
$m-Insert("user",
null,
array('焦焦',
'liruxing1715@sina.com',
'23',
time()),
true);
//
功能同上,返回
last_insert_id(插入的增長(zhǎng)id)
$m-Insert("INSERT
INTO
`user`
(`name`,
`email`,
`age`,
`commit_time`)
VALUES
('張小花',
'zhangxiaohua@sina.com.cn',
'22',
'".time()."')");
//SQL方法,返回值為數(shù)據(jù)庫(kù)影響的行數(shù)
$m-Insert("INSERT
INTO
`user`
(`name`,
`email`,
`age`,
`commit_time`)
VALUES
('張小花',
'zhangxiaohua@sina.com.cn',
'22',
'".time()."')",
true);
//
同上,返回
last_insert_id
注:Insert
方法中的第二個(gè)參數(shù)若為null,可自動(dòng)獲得插入表除
auto_increment
字段之外的所有字段,詳情請(qǐng)看M源文件;若要返回值為最后插入的
ID,那么請(qǐng)?jiān)O(shè)置
Insert
方法的最后一個(gè)參數(shù)為
true(默認(rèn)是false);
方法2、Update()
修改數(shù)據(jù)
update
方法的全部使用案例如下:
復(fù)制代碼
代碼如下:
$m-Update("user",
array('name'='李茹茹',
'age'=24),
"id=1");
//拼接方法,修改id為1的數(shù)據(jù)的名稱為“李茹茹”;年齡為“24”,其方法的返回值為受影響的行數(shù)
$m-Update("UPDATE
`user`
SET
`name`='李茹茹',
`age`=24
WHERE
id
=
1");
//SQL
用法,功能同上
方法3、Del()
刪除數(shù)據(jù)
Del
方法的全部使用案例如下:
復(fù)制代碼
代碼如下:
$m-Del('user',
'id=3');
//拼接方法:刪除`user`表中
id
為3的數(shù)據(jù),返回受影響的行數(shù)
$m-Del("DELETE
FROM
`user`
WHERE
id=4");
//SQL方法:刪除`user`表中
id
為4的數(shù)據(jù),返回受影響的行數(shù)
$m-Del("DELETE
FROM
`user`
WHERE
id
in
(10,
11,
12)");
//SQL方法:刪除多條數(shù)據(jù),刪除`user`表中
id
為
10、11、12
的數(shù)據(jù),返回受影響的行數(shù)
方法4、Total()
獲取記錄數(shù),返回值都為int
Del
方法的全部使用案例如下:
復(fù)制代碼
代碼如下:
$m-Total('user');
//拼接方法:返回
`user`表中的記錄數(shù),無(wú)條件
$m-Total('user',
'id1');
//拼接方法:返回
`user`表中
id
大于1的記錄數(shù),有條件
$m-Total("SELECT
COUNT(*)
AS
total
FROM
`user`");
//SQL方法,注:使用SQL方法,語(yǔ)句中必須使用
"AS
total",否則會(huì)報(bào)錯(cuò)
方法5、IsExists()
檢查數(shù)據(jù)是否存在,返回值為boolean
復(fù)制代碼
代碼如下:
$m-IsExists('user',
"`name`='焦焦'");
//拼接方法:返回`user`表中是否存在`name`為“焦焦”的數(shù)據(jù),返回true,若不存在,返回false
方法6、InsertId()
獲取表下一個(gè)添加的自動(dòng)增長(zhǎng)id,注意,這里不進(jìn)行添加操作,只是獲取下一個(gè)增長(zhǎng)id
復(fù)制代碼
代碼如下:
echo
$m-InsertId('user');
//獲取`user`
表下一個(gè)添加的自動(dòng)增長(zhǎng)id
方法7、GetRow()
返回單條數(shù)據(jù),返回值為一維數(shù)組
GetRow
方法的全部使用案例如下:
復(fù)制代碼
代碼如下:
$data
=
$m-GetRow("SELECT
`name`,email
FROM
`user`
WHERE
id=1");
//SQL方法,返回一維數(shù)組,例如:Array
(
[name]
=
焦焦
[email]
=
liruxing1715@sina.com
)
$data
=
$m-GetRow("SELECT
u.`name`,
u.email,
c.class_name
FROM
`user`
u,
`class`
c
WHERE
u.class_id=c.class_id
AND
u.id=1");
//SQL方法,多表查詢
$data
=
$m-GetRow('user',
'`name`,email',
"id=1");
//拼接方法
$data
=
$m-GetRow('user
as
u,`class`
c',
'u.`name`,u.email,c.class_name',
"u.id=1
AND
u.class_id=c.class_id");
//拼接方法,多表查詢
$data
=
$m-GetRow("SELECT
`name`,email
FROM
`user`");
//如果沒(méi)有指定條件應(yīng)該是顯示全部信息,但是在此方法中將默認(rèn)顯示第一條(不推薦這么使用?。。。?/p>
$data
是查詢出來(lái)的一維數(shù)組。
方法8、GetOne()
返回單個(gè)數(shù)據(jù)
GetOne
方法的全部使用案例如下:
復(fù)制代碼
代碼如下:
$name
=
$m-GetOne("SELECT
`name`
FROM
`user`
WHERE
id=1");
//SQL方法,返回一個(gè)字符串,例如:焦焦
$name
=
$m-GetOne("user",
"name",
"id=1");
//拼接方法,返回一個(gè)字符串,例如:焦焦
方法9、FetchAll()
返回所有記錄
復(fù)制代碼
代碼如下:
$data
=
$m-FetchAll("user");
//返回`user`表中的所有記錄,以二維數(shù)組的形式
$data
=
$m-FetchAll("SELECT
*
FROM
`user`");
//SQL
方法,功能和返回值同上
$data
=
$m-FetchAll("user",
"name,email",
"id1",
'id
DESC',
'2');
//返回兩條id1的數(shù)據(jù),只顯示name,email,并且以id
為倒序排序。注:請(qǐng)注意該方法的最后一個(gè)參數(shù)也可以為'0,2',目的是為分頁(yè)準(zhǔn)備的,如果第一頁(yè)為'0,2'的話,那么第二頁(yè)就是'2,2'
//該方法也支持聯(lián)表查詢和多表查詢,下面以聯(lián)表查詢?yōu)槔?/p>
$data
=
$m-FetchAll("`user`
as
u
LEFT
JOIN
`class`
as
c
ON
u.class_id=c.class_id",
"u.`name`,u.email,
c.class_name",
"u.id=1");
//注意:該拼接方法中,ON
添加的位置
注:對(duì)于該
FetchAll
方法,后續(xù)我會(huì)寫(xiě)一篇使用該方法進(jìn)行完美分頁(yè)的文章??!請(qǐng)關(guān)注。
方法10、MultiQuery()
執(zhí)行多條SQL語(yǔ)句
復(fù)制代碼
代碼如下:
$sql
=
"INSERT
INTO
user
(`name`,email,
age,
class_id,
commit_time)
VALUES
('賈花花',
'jiahuahua@sina.com.cn',
'22',
'1',
'".time()."')";
//添加一個(gè)名叫“賈花花”的學(xué)生信息
$sql
.=
";DELETE
FROM
`user`
WHERE
`name`='焦焦'";
//刪除一條名叫“焦焦”的學(xué)生信息
//解釋:$sql
是多條
SQL
以英文;(分號(hào))拼接起來(lái)的
$data
=
$m-MultiQuery($sql);
//返回為true,代表執(zhí)行成功;為false,代表執(zhí)行失敗
類庫(kù)講解完畢
到此該類庫(kù)的全部功能就講解完畢,希望你能多看看M文件,了解其內(nèi)部運(yùn)行的機(jī)制。M
文件不會(huì)存在執(zhí)行緩慢情況,請(qǐng)大家放心使用。
如果在使用過(guò)程中出現(xiàn)
SQL
拼接錯(cuò)誤,類庫(kù)會(huì)報(bào)出友善的錯(cuò)誤提示。
有問(wèn)題請(qǐng)留言,歡迎大家的批評(píng)和建議,加油!學(xué)習(xí)好運(yùn)。
php數(shù)據(jù)庫(kù)操作(比較麻煩- -!)
1、首先獲得用戶名稱
2、用你的代碼獲得增加多少金錢(qián)
3、連接數(shù)據(jù)庫(kù) 查看(mysql_connect,mysql_link)
4、假設(shè)如下語(yǔ)句,就可實(shí)現(xiàn)你的增加用戶錢(qián)數(shù)的目的!
alter member set memberdata=memberdata-5 where 用戶名="xxx";
--------------------------------
晚上給你一個(gè)演示!
其實(shí),這樣的操作,你可以看看Discuz的源碼就明白了!
最好用的PHP數(shù)據(jù)庫(kù)操作類-ezSQL
ezSQL是一個(gè)非常好用的PHP數(shù)據(jù)庫(kù)操作類 著名的開(kāi)源博客WordPress的數(shù)據(jù)庫(kù)操作就使用了ezSQL的MySQL部分 該數(shù)據(jù)庫(kù)操作類支持幾乎所有主流的數(shù)據(jù)庫(kù) 如 PHP PDO mySQL Oracle InterBase/FireBird PostgreSQL SQLite以及MS SQL等 ezSQL具有很強(qiáng)的調(diào)試功能 可以快速地查看SQL代碼的執(zhí)行情況 使用ezSQL 可以為我們節(jié)省開(kāi)發(fā)時(shí)間 簡(jiǎn)化代碼并提高運(yùn)行效率
ezSQL的優(yōu)點(diǎn)就不用多說(shuō)了 它小巧 快速 簡(jiǎn)單 易用 并且開(kāi)源 還有就是安全 你沒(méi)想到的細(xì)節(jié)它都為你考慮了 你只需要在你的腳本開(kāi)頭包含相關(guān)的PHP文件 然后你就可以使用更好用的一套ezSQL函數(shù)來(lái)代替標(biāo)準(zhǔn)的PHP數(shù)據(jù)庫(kù)操作函數(shù)
下面是ezSQL中一些主要的函數(shù)
$db get_results 從數(shù)據(jù)庫(kù)中讀取數(shù)據(jù)集
$db get_row 從數(shù)據(jù)庫(kù)中讀取一行數(shù)據(jù)
$db get_col 從數(shù)據(jù)庫(kù)中讀取一列指定的數(shù)據(jù)集
$db get_var 從數(shù)據(jù)庫(kù)的數(shù)據(jù)集中讀取一個(gè)值
$db query 執(zhí)行一條SQL語(yǔ)句
$db debug 打印最后執(zhí)行的SQL語(yǔ)句及其返回的結(jié)果
$db vardump 打印變量的結(jié)構(gòu)及其內(nèi)容
$db select 選擇一個(gè)新數(shù)據(jù)庫(kù)
$db get_col_info 獲取列的信息
$db hide_errors 隱藏錯(cuò)誤
$db show_errors 顯示錯(cuò)誤
ezSQL的使用方法很簡(jiǎn)單 首先下載ezSQL源代碼 然后將ez_sql_core php文件和ez_sql_mysql php文件(這里以mySQL為例)放到與你的腳本文件相同的目錄下 然后將下面的代碼添加到你的腳本文件的最前面 這樣就可以正常使用ezSQL了
?php// 包含ezSQL的核心文件include_once?"ez_sql_core php";// 包含ezSQL具體的數(shù)據(jù)庫(kù)文件 這里以mySQL為例include_once?"ez_sql_mysql php";// 初始化數(shù)據(jù)庫(kù)對(duì)象并建立數(shù)據(jù)庫(kù)連接$db?=?new?ezSQL_mysql( db_user db_password db_name db_host );?
下面是ezSQL中一些主要函數(shù)的應(yīng)用實(shí)例 這些代碼均來(lái)自于ezSQL的官方幫助文檔
實(shí)例一
// Select multiple records from the database and print them out $users?=?$db get_results("SELECT name email FROM users");foreach?(?$users?as?$user?)?{? ? ? ? ? ??// Access data using object syntax? ? ? ? ? ??echo?$user name;? ? ? ? ? ??echo?$user email;}
實(shí)例二
// Get one row from the database and print it out $user?=?$db get_row("SELECT name email FROM users WHERE id = ");echo?$user name;echo?$user email;
實(shí)例三
// Get one variable from the database and print it out $var?=?$db get_var("SELECT count(*) FROM users");echo?$var;
實(shí)例四
// Insert into the database$db query("INSERT INTO users (id name email) VALUES (NULL justin jv@foo )");
實(shí)例五
// Update the database$db query("UPDATE users SET name = Justin WHERE id = )");
實(shí)例六
// Display last query and all associated results$db debug();
實(shí)例七
// Display the structure and contents of any result(s) or any variable$results?=?$db get_results("SELECT name email FROM users");$db vardump($results);
實(shí)例八
// Get one column (based on column index) and print it out $names?=?$db get_col("SELECT name email FROM users" )foreach?(?$names?as?$name?)?{? ??echo?$name;}
實(shí)例九
// Same as above ‘but quicker’foreach?(?$db get_col("SELECT name email FROM users" )?as?$name?)?{? ??echo?$name;}
實(shí)例十
lishixinzhi/Article/program/PHP/201311/21297
網(wǎng)頁(yè)題目:php數(shù)據(jù)庫(kù)操作模塊 php數(shù)據(jù)庫(kù)設(shè)計(jì)
轉(zhuǎn)載來(lái)源:http://www.dlmjj.cn/article/dddcigs.html