您当前的位置: 首页 > 学无止境 > 网站建设 网站首页网站建设
使用php的mysqli扩展中预处理语句
发布时间:2015-12-01 09:36:58编辑:雪饮阅读()
mysqli预处理插入数据:
<?php
$mysqli=new MySQLi("localhost","root","root","mysqlicn");
//准备好一条语句放到服务器中,插入语句
$sql="insert into shops(name,price,num,desn) values(?,?,?,?)";
$stmt=$mysqli->prepare($sql);
//给每个占位符号传值(绑定参数)idsb(不同的数据类型)
//i=int,d=double,s=string,b=boole
$stmt->bind_param("sdis",$name,$price,$num,$desn);
$name="zhangsan";
$price=56.78;
$num=66;
$desn="hello good";
//执行
$stmt->execute();
$name="zhangsan";
$price=56.78;
$num=66;
$desn="hello good";
//执行
$stmt->execute();
echo "最后执行id:".$stmt->insert_id."<br/>";
echo "影响行数:".$stmt->affected_rows."<br/>";
$stmt->close();
?>
mysqli预处理-取出数据记录(单条取出,不存在结果集):
<?php
$mysqli=new MySQLi("localhost","root","root","mysqlicn");
$stmt=$mysqli->prepare("select id,name,price,num,desn from shops where id>?");
$stmt->bind_param("i",$id);
$stmt->bind_result($id,$name,$price,$num,$desn);
$id=3;
$stmt->execute();
$stmt->fetch();
echo $id."----";
echo $name."----";
echo $price."----";
echo $num."----";
echo $desn."----<br/>";
$stmt->fetch();
echo $id."----";
echo $name."----";
echo $price."----";
echo $num."----";
echo $desn."----<br/>";
/*echo "最后执行id:".$stmt->insert_id."<br/>";
echo "影响行数:".$stmt->affected_rows."<br/>";*/
$stmt->close();
?>
上面是通过最简单的复制如下代码:
$stmt->fetch();
echo $id."----";
echo $name."----";
echo $price."----";
echo $num."----";
echo $desn."----<br/>";
实现取出多条记录的。
其实若一直复制,到了最后就会一直取出最末尾的一条记录。
我们可以通过$stmt->fetch()的返回值判断是否到了最后一条记录。
没有到达最后一条记录之前该返回值为true,到了最后一条记录返回值为null
那么就可以通过while循环来遍历全部记录结果:
while($stmt->fetch()){
echo $id."----";
echo $name."----";
echo $price."----";
echo $num."----";
echo $desn."----<br/>";
}
由于$stmt->fetch()是每次只取一条数据,所以用$stmt->data_seek(2);来指定记录指针是无效的。
不过记录总数还是可以通过echo "记录总数:".$stmt->num_rows;来显示出来的,并不像高洛峰老师所说无法显示出来
无意间发现只要将该语句置于while遍历所有记录之后就可以获取出来,在此之前是无法获取的。
完整的mysqli预处理结果集实例(包含字段名称遍历):
<?php
$mysqli=new MySQLi("localhost","root","root","mysqlicn");
$stmt=$mysqli->prepare("select id,name,price,num,desn from shops where id>?");
$stmt->bind_param("i",$id);
$stmt->bind_result($id,$name,$price,$num,$desn);
$stmt->store_result();
$fieds=$stmt->result_metadata();
echo "所有字段信息:<br/>";
while($fied=$fieds->fetch_field()){
echo $fied->name."----";
}
echo "<hr/>";
$id=3;
$stmt->execute();
while($stmt->fetch()){
echo $id."----";
echo $name."----";
echo $price."----";
echo $num."----";
echo $desn."----<br/>";
}
echo "记录总数:".$stmt->num_rows;
$stmt->free_result();
$stmt->close();
?>
关键字词:php,mysqli,预处理
上一篇:mysqli多语句处理与事务处理