mysql编程扩展_php数据库编程---mysqli扩展库

1,mysqli扩展库允许我们访问MySQL数据库,并对MySql数据库进行curd操作。Mysqli扩展库比mysql扩展库加强了。

2,mysqli扩展库和mysql扩展库的比较

(1) mysql是非持继连接函数而mysqli是永远连接函数。也就是说 mysql每次链接都会打开一个连接的进程,而 mysqli多次运行mysqli将使用同一连接进程,从而减少了服务器的开销。

(2) mysqli连接是永久连接,而mysql是非永久连接。

mysql连接:每当第二次使用的时候,都会重新打开一个新的进程。

mysqli连接:一直都只使用同一个进程。

好处:这样就可以很大程度的减轻服务器端压力。

当然,如果mysql也需要永久连接的话,就可以使用mysql_pconnect()这个函数

(3) mysqli支持面向对象编程,同时mysqli扩展库考虑到php老程序员,提供面向过程的编程风格。

(4) mysqli支持一次执行多条sql。

(5) mysqli具有事务特性。

3,mysqli有两套编程风格

b5bf27d222364cf437e0841f1e6a9367.png

4,mysqli编程的快速入门,编写一个程序,这个程序从user1数据表中读取数据,并打印在网页中。

(1) 面向过程实现,mysqli面向过程与mysql基本相同,就是在mysql后加i,变为mysqli即可。不过还是有两处不同,分别是:

(1.1) 连接conn时候,mysql是在conn连接成功后,重新一步获取数据库的;mysqli是在conn连接同时获取数据库的。

mysqli进行连接

$conn = mysqli_connect($host,$username,$password,$dbName);

mysql进行连接

$conn = mysql_connect($host,$username,$password,$dbName);

mysql_select_mysql($dbName);

(1.2) 执行sql语句时候,mysql参数依次是$sql和$conn,而mysqli的次序恰好相反。

mysqli

$rs = mysqli_query($conn,$sql);

mysql

$rs = mysql_query($sql, $conn);

(1.3)mysqli实例如下:

//mysqli操作mysql数据库(面向过程风格)

//1,得到mysqli连接

$conn = mysqli_connect("127.0.0.1","root","123456","test") or die('连接失败:'.$conn_connect_error());

mysqli_query("set names utf-8");

//2,向数据库发送sql语句(ddl,dml dql.....)

$sql = "select * from user1";

mysqli_query($mysqli,$sql);

//3,处理得到的结果

//循环取出$res中的数据mysqli_fetch_row mysql_fetch_row

while($row=mysqli_fetch_assoc($res)){

foreach($row as $key=>$val){

echo "--$val";

}

echo "
";

}

//4,关闭资源

//释放资源

mysqli_free_result($res);

//关闭连接

mysqli_close();

?>

(2) 面向对象实现,面向对象实现与面向过程实现类似,就是$conn和$rs都是类,调用的方法与面向过程相同。

$host = '127.0.0.1';

$username = 'root';

$password = '123456';

$dbName = "test";

//mysqli操作mysql数据库(面向对象风格)

//1,创建mysqli对象

$mysqli = new MySQLi($host,$username,$password,$dbName);

//验证是否ok

if($mysqli->connect_error){

die("连接失败! ".$mysqli->connect_error);

}

$mysqli->query("set names utf-8");

//2,操作数据库(发送sql)

$sql = "select * from user1";

//$res是结果集.mysqli result

$res = $mysqli->query($sql);

//3,处理结果

while($row = $res->fetch_assoc()){

foreach($row as $key=>$val){

echo "--$val";

}

echo "
";

}

//4,关闭资源

//释放资源

$res->free();

//关闭连接

$mysqli->close();

?>

5,程序中的$res用于代表Sql语句的执行结果

① 如果执行的是dml语句,则返回bool;

② 如果执行的是dql语句,则返回查询结果MySQLi_Result结果集对象;

6,从mysqli result取出查询的结果有如下方式,推荐使用前两种方式,效率高。

① mysqli_result::fetch_assoc

② mysqli_result::fetch_row

③ mysqli_result::fetch_array

④ mysqli_result::fetch_object

7,数据库连接是非常稀有的资源,我们使用原则是晚创建、早释放。mysqli的面向对象特性对数据库进行增删改操作。操作过程中如果对应数据库的string类型,要求我们用''包括;如果对应数据库的数值型,则可以用''包括,也可以不用。

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

//mysqli操作mysql数据库(面向对象风格)

//1,创建mysqli对象

$mysqli = new MySQLi("127.0.0.1","root","123456","test");

//验证是否ok

if($mysqli->connect_error){

die("连接失败! ".$mysqli->connect_error);

}

//2,操作数据库(发送sql)

//$sql = "insert into user1 (name,password,email,age) VALUES ('小红',md5('123456'),'xiaohong@126.com',9)";

//$sql = "delete from user1 where id = 3";

$sql = "update user1 set name = '小花', password = md5('120987'),email='757499089@qq.com',age = 20 where id = 4";

//$res是结果集.mysqli result

$res = $mysqli->query($sql);

if(!$res){

echo "操作失败".$mysqli->error;

}else{

if($mysqli->affected_rows > 0){

echo "执行成功!";

}else{

echo "没有数据表没有变化!";

}

}

//4,关闭资源

//关闭连接

$mysqli->close();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值