(转载)函数:mysqli_query和mysql_query有何区别?
(转载)http://wzan315.blog.163.com/blog/static/37192636201241732045299/
Mysqli.dll是一个允许以对象的方式或者过程操作数据库的,它的使用方式也很容易。这里就几个常见的操作和mysql.dll做一个对比。 1:mysql.dll(可以理解为函数式的方式):
c o n n = m y s q l c o n n e c t ( ′ l o c a l h o s t ′ , ′ u s e r ′ , ′ p a s s w o r d ′ ) ; / / 连 接 m y s q l 数 据 库 m y s q l s e l e c t d b ( ′ d a t a b a s e ′ ) ; / / 选 择 数 据 库 conn = mysql_connect('localhost', 'user', 'password'); //连接mysql数据库 mysql_select_db('data_base'); //选择数据库 conn=mysqlconnect(′localhost′,′user′,′password′); //连接mysql数据库 mysqlselectdb(′database′);//选择数据库 result = mysql_query(‘select * from data_base’);//这里有第二个可选参数,指定打开的连接
$row = mysql_fetch_row( $result ) ) //为了简单,这里只取一行数据
echo
r
o
w
[
0
]
;
/
/
输
出
第
一
个
字
段
的
值
m
y
s
q
l
i
也
有
过
程
式
的
方
式
,
只
不
过
开
始
贯
以
m
y
s
q
l
i
的
前
缀
,
其
他
都
差
不
多
。
如
果
m
y
s
q
l
i
以
过
程
式
的
方
式
操
作
的
话
,
有
些
函
数
必
须
指
定
资
源
,
比
如
说
m
y
s
q
l
i
q
u
e
r
y
(
资
源
标
识
,
S
Q
L
语
句
)
,
并
且
资
源
标
识
的
参
数
是
放
在
前
面
的
,
而
m
y
s
q
l
q
u
e
r
y
(
S
Q
L
语
句
,
′
可
选
′
)
的
资
源
标
识
是
放
在
后
面
的
,
并
且
可
以
不
指
定
,
它
默
认
是
上
一
个
打
开
的
连
接
或
资
源
。
2
m
y
s
q
l
i
.
d
l
l
(
对
象
方
式
)
:
row[0]; //输出第一个字段的值 mysqli也有过程式的方式,只不过开始贯以mysqli的前缀,其他都差不多。如果mysqli以过程式的方式操作的话,有些函数必须指定资源,比如说 mysqli_query(资源标识,SQL语句),并且资源标识的参数是放在前面的,而mysql_query(SQL语句,'可选')的资源标识是放在后面的,并且可以不指定,它默认是上一个打开的连接或资源。 2mysqli.dll(对象方式):
row[0];//输出第一个字段的值 mysqli也有过程式的方式,只不过开始贯以mysqli的前缀,其他都差不多。如果mysqli以过程式的方式操作的话,有些函数必须指定资源,比如说mysqliquery(资源标识,SQL语句),并且资源标识的参数是放在前面的,而mysqlquery(SQL语句,′可选′)的资源标识是放在后面的,并且可以不指定,它默认是上一个打开的连接或资源。 2mysqli.dll(对象方式): conn = new mysqli(‘localhost’, ‘user’, ‘password’,‘data_base’);
//这里的连接是new出来的,最后一个参数是直接指定数据库,不用mysql_select_db()了
//也可以构造时候不指定,然后
c
o
n
n
−
>
s
e
l
e
c
t
d
b
(
′
d
a
t
a
b
a
s
e
′
)
conn -> select_db('data_base')
conn−>selectdb(′database′) result =
c
o
n
n
−
>
q
u
e
r
y
(
′
s
e
l
e
c
t
∗
f
r
o
m
d
a
t
a
b
a
s
e
′
)
;
conn -> query( 'select * from data_base' );
conn−>query(′select∗fromdatabase′); row =
r
e
s
u
l
t
−
>
f
e
t
c
h
r
o
w
(
)
;
/
/
取
一
行
数
据
e
c
h
o
r
o
w
[
0
]
;
/
/
输
出
第
一
个
字
段
的
值
二
:
m
y
s
q
l
f
e
t
c
h
r
o
w
(
)
,
m
y
s
q
l
f
e
t
c
h
a
r
r
a
y
(
)
这
两
个
函
数
,
返
回
的
都
是
一
个
数
组
,
区
别
就
是
第
一
个
函
数
返
回
的
数
组
是
只
包
含
值
,
我
们
只
能
result -> fetch_row(); //取一行数据 echo row[0]; //输出第一个字段的值 二:mysql_fetch_row(),mysql_fetch_array() 这两个函数,返回的都是一个数组,区别就是第一个函数返回的数组是只包含值,我们只能
result−>fetchrow();//取一行数据 echorow[0];//输出第一个字段的值 二:mysqlfetchrow(),mysqlfetcharray() 这两个函数,返回的都是一个数组,区别就是第一个函数返回的数组是只包含值,我们只能row[0],
r
o
w
[
1
]
,
这
样
以
数
组
下
标
来
读
取
数
据
,
而
m
y
s
q
l
f
e
t
c
h
a
r
r
a
y
(
)
返
回
的
数
组
既
包
含
第
一
种
,
也
包
含
键
值
对
的
形
式
,
我
们
可
以
这
样
读
取
数
据
,
(
假
如
数
据
库
的
字
段
是
u
s
e
r
n
a
m
e
,
p
a
s
s
w
d
)
:
row[1],这样以数组下标来读取数据,而mysql_fetch_array()返回的数组既包含第一种,也包含键值 对的形式,我们可以这样读取数据,(假如数据库的字段是 username,passwd):
row[1],这样以数组下标来读取数据,而mysqlfetcharray()返回的数组既包含第一种,也包含键值对的形式,我们可以这样读取数据,(假如数据库的字段是username,passwd): row[‘username’],
r
o
w
[
′
p
a
s
s
w
d
′
]
而
且
,
如
果
用
(
row['passwd'] 而且,如果用(
row[′passwd′] 而且,如果用(row as $kay => $value)来操作的话,还以直接取得数据库的字段名称。
更主要的是mysqli是php5提供的新函数库,(i)表示改进,其执行速度更快.
MYSQLI到底是什么呢?MYSQLI有何优点,MYSQLI如何开启?
在新下载的php5中你会发现多了一个mysqli.dll,它是干什么用的呢?我简单介绍下。。。
mysqli.dll是php对mysql新特性的一个扩展支持。mysql是非持继连接函数而mysqli是永远连接函数。也就是说mysql每次链接都会打开一个连接的进程而mysqli多次运行mysqli将使用同一连接进程,从而减少了服务器的开销,在高MYSQL查询环境下mysqli性能比mysql好点
在php5中可以在php.ini中加载
修改C:\WINDOWS\PHP.INI,把;extension=php_mysqli.dll前面的;去掉就能使PHP加载MYSQLI功能 起源网资讯频道
mysql后面的i,指improved, interface, ingenious, incompatible or incomplete(改扩展仍在开发中,因为mysql4。1和mysql5都没有正式推出尚在开发中,新的特性没有完全实现)
mysqli想实现的目标具体有:
-更简单的维护
-更好的兼容性
-向后兼容
mysql(指php中的模块)发展到现在显得比较凌乱,有必要重新做下整理。同时,有必要跟上mysql(dbms)的发展步伐,加入新的特性的支持,以及适应mysql(dbms)以后的版本。所以诞生了mysqli.dll
mysqli.dll的特性:
-可以和mysql.dll一样的方式使用
-支持oo接口,简简单单调用
-支持mysql4。1引入的新特性
-通过mysqli_init() 等相关函数,可以设置高级连接选项