您的位置:

php中有mysqli类,php连接mysqli

本文目录一览:

php连接数据库mysqli创建对象?

你把连接数据库的一些属性封装到一个类里面,在实例化这个类,就是创建了这个类的对象

php怎么用mysqli链接数据库和输出sql

一、mysql与mysqli的概念相关:

1、mysql与mysqli都是php方面的函数集,与

mysql数据库

关联不大。

2、在

php5

版本之前,一般是用php的

mysql函数

去驱动mysql数据库的,比如mysql_query()的函数,属于

面向过程

3、在php5版本以后,增加了mysqli的函数功能,某种意义上讲,它是mysql系统函数的增强版,更稳定更高效更安全,与mysql_query()对应的有mysqli_query(),属于面向对象,用对象的方式操作驱动mysql数据库

二、mysql与mysqli的区别:

1、mysql是非持继连接函数,mysql每次链接都会打开一个连接的进程。

2、mysqli是永远连接函数,mysqli多次运行mysqli将使用同一连接进程,从而减少了服务器的开销。mysqli封装了诸如事务等一些高级操作,同时封装了DB操作过程中的很多可用的方法。

三、mysql与mysqli的用法:

1:mysql(过程方式):

$conn

=

mysql_connect('

localhost

',

'user',

'password'); //连接mysql数据库

mysql_select_db

('data_base');

//选择数据库$result

=

mysql_query('select

*

from

data_base');//第二个可选参数,指定打开的连接$row

=

mysql_fetch_row(

$result

)

)

//只取一行数据echo

$row[0];

//输出第一个字段的值

PS:mysqli以过程式的方式操作,有些函数必须指定资源,比如mysqli_query(资源标识,

SQL语句

),并且资源标识的参数是放在前面的,而mysql_query(SQL语句,'资源标识')的资源标识是可选的,默认值是上一个打开的连接或资源。

2、mysqli(对象方式):

$conn

=

new

mysqli('localhost',

'user',

'password','data_base');//要使用new

操作符

,最后一个参数是直接指定数据库//假如构造时候不指定,那下一句需要$conn

-

select_db('data_base')实现$result

=

$conn

-

query(

'select

*

from

data_base'

);$row

=

$result

-

fetch_row();

//取一行数据echo

row[0];

//输出第一个字段的值

使用new

mysqli('localhost',

usenamer',

'password',

'databasename');会报错,提示如下:

Fatal

error:

Class

'mysqli'

not

found

in

...

一般是mysqli是没有开启的,因为mysqli类不是

默认开启

的,win下要改php.ini,去掉php_mysqli.dll前的;,linux下要把mysqli编译进去。

四、mysql_connect()与mysqli_connect()

1.使用mysqli,可以把数据库名称当作参数传给mysqli_connect()函数,也可以传递给mysqli的

构造函数

2.如果调用mysqli_query()或mysqli的对象查询query()方法,则连接标识是必需的。

php mysqli 常用函数有哪些

php  中 mysqli 是个类,这个类的函数(方法)有:

mysqli::$affected_rows — Gets the number of affected rows in a previous MySQL operation

mysqli::autocommit — 打开或关闭本次数据库连接的自动命令提交事务模式

mysqli::begin_transaction — Starts a transaction

mysqli::change_user — Changes the user of the specified database connection

mysqli::character_set_name — 返回当前数据库连接的默认字符编码

mysqli::$client_info — Get MySQL client info

mysqli::$client_version — Returns the MySQL client version as a string

mysqli::close — 关闭先前打开的数据库连接

mysqli::commit — 提交一个事务

mysqli::$connect_errno — Returns the error code from last connect call

mysqli::$connect_error — Returns a string description of the last connect error

mysqli::__construct — Open a new connection to the MySQL server

mysqli::debug — Performs debugging operations

mysqli::dump_debug_info — 将调试信息输出到日志

mysqli::errno — 返回最近函数调用的错误代码

mysqli::$error_list — Returns a list of errors from the last command executed

mysqli::$error — Returns a string description of the last error

mysqli::$field_count — Returns the number of columns for the most recent query

mysqli::get_charset — Returns a character set object

mysqli::get_client_info — Get MySQL client info

mysqli_get_client_stats — Returns client per-process statistics

mysqli_get_client_version — 作为一个整数返回MySQL客户端的版本

mysqli::get_connection_stats — Returns statistics about the client connection

mysqli::$host_info — 返回一个表述使用的连接类型的字符串

mysqli::$protocol_version — 返回MySQL使用的协议版本号

mysqli::$server_info — 返回MySQL服务器的版本号

mysqli::$server_version — 作为一个整数返回MySQL服务器的版本

mysqli::get_warnings — Get result of SHOW WARNINGS

mysqli::$info — Retrieves information about the most recently executed query

mysqli::init — Initializes MySQLi and returns a resource for use with mysqli_real_connect()

mysqli::$insert_id — Returns the auto generated id used in the last query

mysqli::kill — Asks the server to kill a MySQL thread

mysqli::more_results — Check if there are any more query results from a multi query

mysqli::multi_query — Performs a query on the database

mysqli::next_result — Prepare next result from multi_query

mysqli::options — Set options

mysqli::ping — Pings a server connection, or tries to reconnect if the connection has gone down

mysqli::poll — Poll connections

mysqli::prepare — Prepare an SQL statement for execution

mysqli::query — 对数据库执行一次查询

mysqli::real_connect — 建立一个 MySQL 服务器连接

mysqli::real_escape_string — Escapes special characters in a string for use in an SQL statement, taking into account the current charset of the connection

mysqli::real_query — 执行一个mysql查询

mysqli::reap_async_query — Get result from async query

mysqli::refresh — Refreshes

mysqli::release_savepoint — Removes the named savepoint from the set of savepoints of the current transaction

mysqli::rollback — 回退当前事务

mysqli::rpl_query_type — Returns RPL query type

mysqli::savepoint — Set a named transaction savepoint

mysqli::select_db — 选择用于数据库查询的默认数据库

mysqli::send_query — 发送请求并返回结果

mysqli::set_charset — 设置默认字符编码

mysqli::set_local_infile_default — Unsets user defined handler for load local infile command

mysqli::set_local_infile_handler — Set callback function for LOAD DATA LOCAL INFILE command

mysqli::$sqlstate — Returns the SQLSTATE error from previous MySQL operation

mysqli::ssl_set — Used for establishing secure connections using SSL

mysqli::stat — Gets the current system status

mysqli::stmt_init — 初始化一条语句并返回一个用于mysqli_stmt_prepare(调用)的对象

mysqli::store_result — Transfers a result set from the last query

mysqli::$thread_id — Returns the thread ID for the current connection

mysqli::thread_safe — 返回是否是线程安全的

mysqli::use_result — Initiate a result set retrieval

mysqli::$warning_count — Returns the number of warnings from the last query for the given link

以上函数清单直接来自  网站。你可以进入该网站参看。

php中有mysqli类,是吗?$mysqli->info

本文所述的是一个在PHP中以mysqli方式连接数据库的一个数据库类实例,该数据库类是从一个PHP的CMS中整理出来的,可实现PHP连接数据库类,MySQLi版,兼容PHP4,对于有针对性需要的朋友可根据此代码进行优化和修改。

?

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 : 连接数据库类,MySQLi版

#==================================================================================================

#[类库sql]

class db_mysqli

{

var $query_count = 0;

var $host;

var $user;

var $pass;

var $data;

var $conn;

var $result;

var $prefix = "qingga

php使用mysqli和pdo扩展,测试对比mysql数据库的执行效率完整示例

本文实例讲述了php使用mysqli和pdo扩展,测试对比mysql数据库的执行效率。分享给大家供大家参考,具体如下:

?php

/**

*

测试pdo和mysqli的执行效率

*/

header("Content-type:text/html;charset=utf-8");

//通过pdo链接数据库

$pdo_startTime

=

microtime(true);

$pdo

=

new

PDO("mysql:host=localhost;dbname=test","root","1234",array(PDO::MYSQL_ATTR_INIT_COMMAND

=

"SET

NAMES'utf8';"));

for($i=1;$i=100;$i++){

$title

=

"pdo标题".$i;

$content

=

"pdo内容".$i;

$addtime

=

time();

$user_id

=

$i;

$pdo_sql

=

"INSERT

INTO

`article`(`title`,`content`,`addtime`,`user_id`)

VALUES(:title,:content,:addtime,:user_id)";

$sth

=

$pdo-prepare($pdo_sql);

$sth-bindParam(':title',$title);

$sth-bindParam(':content',$content);

$sth-bindParam(':addtime',$addtime);

$sth-bindParam(':user_id',$user_id);

$sth-execute();

}

$pdo_endTime

=

microtime(true);

$pdo_time

=

$pdo_endTime

-

$pdo_startTime;

echo

$pdo_time;

echo

"hr/";

//通过mysql链接数据库

$mysqli_startTime

=

microtime(true);

$mysqli

=

mysqli_connect("localhost","root","1234","test")

or

die("数据连接失败");

mysqli_query($mysqli,"set

names

utf8");

for($i=1;$i=100;$i++){

$title

=

"mysqli标题".$i;

$content

=

"mysqli内容".$i;

$addtime

=

time();

$user_id

=

$i;

$sql

=

"INSERT

INTO

`article`(`title`,`content`,`addtime`,`user_id`)

VALUES('".$title."','".$content."',".$addtime.",".$user_id.")";

mysqli_query($mysqli,$sql);

}

$mysqli_endTime

=

microtime(true);

$mysqli_time

=

$mysqli_endTime

-

$mysqli_startTime;

echo

$mysqli_time;

echo

"hr/";

if($pdo_time

$mysqli_time){

echo

"pdo的执行时间是mysqli的".round($pdo_time/$mysqli_time)."倍";

}else{

echo

"mysqli的执行时间是pdo的".round($mysqli_time/$pdo_time)."倍";

}

测试结果:其实经过多次测试,pdo和mysqli的执行效率差不多。

更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP基于pdo操作数据库技巧总结》、《php+mysqli数据库程序设计技巧总结》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

您可能感兴趣的文章:php使用mysqli和pdo扩展,测试对比连接mysql数据库的效率完整示例php中数据库连接方式pdo和mysqli对比分析php中关于mysqli和mysql区别的一些知识点分析php操作mysqli(示例代码)php封装的mysqli类完整实例PHP以mysqli方式连接类完整代码实例php简单解析mysqli查询结果的方法(2种方法)php中mysql连接方式PDO使用详解Php中用PDO查询Mysql来避免SQL注入风险的方法php

mysql

PDO

查询操作的实例详解PHP实现PDO的mysql数据库操作类

PHP数据库操作之基于Mysqli的数据库操作类库

此类库简单、易用,便于你自己修改和对功能的改善,能解决大部分

PHP

项目中执行的

SQL

操作。

初步工作

首先,请大家下载这个类库

M.class.php 再下载一个

Mysqli

连接数据库的类库

MysqliDb.class.php(打包下载地址)

新建一个

includes

的文件夹,将下载下来的两个

class

文件,放进去。

然后,请你在项目下创建一个

test.php

文件。注:UTF-8

文件格式

请先根据你机器的情况,填充以下代码,用于连接数据库:

复制代码

代码如下:

header('Content-Type:text/html;Charset=utf-8');

define('ROOT_PATH',

dirname(__FILE__));

define('DB_HOST',

'localhost');

//数据库服务器地址

define('DB_USER',

'root');

//数据库用户名

define('DB_PWD',

'×××');//数据库密码

define('DB_NAME',

'×××');

//数据库名称

define('DB_PORT',

'3306');

//数据库端口

function

__autoload($className)

{

require_once

ROOT_PATH

.

'/includes/'.

ucfirst($className)

.'.class.php';

//自动加载

class

文件

}

好了,上面的这些操作都是初步工作,下面正式进入类库的讲解。

类库讲解

首先,我们得实例化

M.class.php,实例化很简单:

复制代码

代码如下:

$m

=

new

M();

//这步操作代表

M.class.php

中的所有功能都封装在了变量

$m

注:

1、M类库中的方法参数说明,请到

M.class.php

文件中看详细的注释,这里不再进行叙述。建议在学习的时候,对照着看下文件中的参数即注释。

2、讲解代码中用到的数据库结构为:

复制代码

代码如下:

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

复制代码

代码如下:

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

并添加一条测试数据。

3、M类库中,大部分方法都分两中类型,即:SQL方法;拼接方法,具体在实例中可以看出

4、以下称述中的

M

M.class.php

文件

方法1、Insert()

添加数据

Insert

方法的全部使用案例如下:

复制代码

代码如下:

$m-Insert("user",

null,

array('焦焦',

'liruxing1715@sina.com',

'23',

time()));

//

拼接方法:往`user`表中添加一条数据,返回值为数据库影响的行数

$m-Insert("user",

null,

array('焦焦',

'liruxing1715@sina.com',

'23',

time()),

true);

//

功能同上,返回

last_insert_id(插入的增长id)

$m-Insert("INSERT

INTO

`user`

(`name`,

`email`,

`age`,

`commit_time`)

VALUES

('张小花',

'zhangxiaohua@sina.com.cn',

'22',

'".time()."')");

//SQL方法,返回值为数据库影响的行数

$m-Insert("INSERT

INTO

`user`

(`name`,

`email`,

`age`,

`commit_time`)

VALUES

('张小花',

'zhangxiaohua@sina.com.cn',

'22',

'".time()."')",

true);

//

同上,返回

last_insert_id

注:Insert

方法中的第二个参数若为null,可自动获得插入表除

auto_increment

字段之外的所有字段,详情请看M源文件;若要返回值为最后插入的

ID,那么请设置

Insert

方法的最后一个参数为

true(默认是false);

方法2、Update()

修改数据

update

方法的全部使用案例如下:

复制代码

代码如下:

$m-Update("user",

array('name'='李茹茹',

'age'=24),

"id=1");

//拼接方法,修改id为1的数据的名称为“李茹茹”;年龄为“24”,其方法的返回值为受影响的行数

$m-Update("UPDATE

`user`

SET

`name`='李茹茹',

`age`=24

WHERE

id

=

1");

//SQL

用法,功能同上

方法3、Del()

删除数据

Del

方法的全部使用案例如下:

复制代码

代码如下:

$m-Del('user',

'id=3');

//拼接方法:删除`user`表中

id

为3的数据,返回受影响的行数

$m-Del("DELETE

FROM

`user`

WHERE

id=4");

//SQL方法:删除`user`表中

id

为4的数据,返回受影响的行数

$m-Del("DELETE

FROM

`user`

WHERE

id

in

(10,

11,

12)");

//SQL方法:删除多条数据,删除`user`表中

id

10、11、12

的数据,返回受影响的行数

方法4、Total()

获取记录数,返回值都为int

Del

方法的全部使用案例如下:

复制代码

代码如下:

$m-Total('user');

//拼接方法:返回

`user`表中的记录数,无条件

$m-Total('user',

'id1');

//拼接方法:返回

`user`表中

id

大于1的记录数,有条件

$m-Total("SELECT

COUNT(*)

AS

total

FROM

`user`");

//SQL方法,注:使用SQL方法,语句中必须使用

"AS

total",否则会报错

方法5、IsExists()

检查数据是否存在,返回值为boolean

复制代码

代码如下:

$m-IsExists('user',

"`name`='焦焦'");

//拼接方法:返回`user`表中是否存在`name`为“焦焦”的数据,返回true,若不存在,返回false

方法6、InsertId()

获取表下一个添加的自动增长id,注意,这里不进行添加操作,只是获取下一个增长id

复制代码

代码如下:

echo

$m-InsertId('user');

//获取`user`

表下一个添加的自动增长id

方法7、GetRow()

返回单条数据,返回值为一维数组

GetRow

方法的全部使用案例如下:

复制代码

代码如下:

$data

=

$m-GetRow("SELECT

`name`,email

FROM

`user`

WHERE

id=1");

//SQL方法,返回一维数组,例如: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`");

//如果没有指定条件应该是显示全部信息,但是在此方法中将默认显示第一条(不推荐这么使用!!!)

$data

是查询出来的一维数组。

方法8、GetOne()

返回单个数据

GetOne

方法的全部使用案例如下:

复制代码

代码如下:

$name

=

$m-GetOne("SELECT

`name`

FROM

`user`

WHERE

id=1");

//SQL方法,返回一个字符串,例如:焦焦

$name

=

$m-GetOne("user",

"name",

"id=1");

//拼接方法,返回一个字符串,例如:焦焦

方法9、FetchAll()

返回所有记录

复制代码

代码如下:

$data

=

$m-FetchAll("user");

//返回`user`表中的所有记录,以二维数组的形式

$data

=

$m-FetchAll("SELECT

*

FROM

`user`");

//SQL

方法,功能和返回值同上

$data

=

$m-FetchAll("user",

"name,email",

"id1",

'id

DESC',

'2');

//返回两条id1的数据,只显示name,email,并且以id

为倒序排序。注:请注意该方法的最后一个参数也可以为'0,2',目的是为分页准备的,如果第一页为'0,2'的话,那么第二页就是'2,2'

//该方法也支持联表查询和多表查询,下面以联表查询为例

$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

添加的位置

注:对于该

FetchAll

方法,后续我会写一篇使用该方法进行完美分页的文章!!请关注。

方法10、MultiQuery()

执行多条SQL语句

复制代码

代码如下:

$sql

=

"INSERT

INTO

user

(`name`,email,

age,

class_id,

commit_time)

VALUES

('贾花花',

'jiahuahua@sina.com.cn',

'22',

'1',

'".time()."')";

//添加一个名叫“贾花花”的学生信息

$sql

.=

";DELETE

FROM

`user`

WHERE

`name`='焦焦'";

//删除一条名叫“焦焦”的学生信息

//解释:$sql

是多条

SQL

以英文;(分号)拼接起来的

$data

=

$m-MultiQuery($sql);

//返回为true,代表执行成功;为false,代表执行失败

类库讲解完毕

到此该类库的全部功能就讲解完毕,希望你能多看看M文件,了解其内部运行的机制。M

文件不会存在执行缓慢情况,请大家放心使用。

如果在使用过程中出现

SQL

拼接错误,类库会报出友善的错误提示。

有问题请留言,欢迎大家的批评和建议,加油!学习好运。