您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

php mysqli扩展之预处理实例详解

2025/5/24 15:09:17发布49次查看
在前一篇 mysqli基础知识中谈到mysqli的安装及基础操作(主要是单条sql语句的查询操作),今天介绍的是mysqli中很重要的一个部分:预处理。
在mysqli操作中常常涉及到它的三个主要类:mysqli类,mysql_stmt类,mysqli_result类。预处理主要是利用mysql_stmt类完成的。
预处理是一种重要的 防止sql注入的手段,对提高网站安全性有重要意义。
本文案例为 数据库名为test,数据表名为test,  字段有id ,title 两个,id自增长主键。
<?php define("host", "localhost");define("user", 'root');define("pwd", '');define("db", 'test');$mysqli=new mysqli(host,user,pwd,db);if ($mysqli->connect_errno) { "connect error:".$mysqli->connect_error; }$mysqli->set_charset('utf8');$id='';$title='title4';//用?代替 变量$sql="insert test values (?,?)";//获得$mysqli_stmt对象,一定要记住传$sql,预处理是对sql语句的预处理。$mysqli_stmt=$mysqli->prepare($sql);//第一个参数表明变量类型,有i(int),d(double),s(string),b(blob)$mysqli_stmt->bind_param('is',$id,$title);//执行预处理语句if($mysqli_stmt->execute()){ echo $mysqli_stmt->insert_id; }else{ echo $mysqli_stmt->error; }$mysqli->close();
使用mysqli预处理防止sql注入:
$id='4';$title='title4';$sql="select * from test where id=? and title=?";$mysqli_stmt=$mysqli->prepare($sql);$mysqli_stmt->bind_param('is',$id,$title);if ($mysqli_stmt->execute()) { $mysqli_stmt->store_result(); if($mysqli_stmt->num_rows()>0){ echo "验证成功"; }else{ echo "验证失败"; } } $mysqli_stmt->free_result(); $mysqli_stmt->close();
使用mysqli预处理执行查询语句:
$sql="select id,title from test where id>=?";$mysqli_stmt=$mysqli->prepare($sql);$id=1;$mysqli_stmt->bind_param('i',$id);if($mysqli_stmt->execute()){ $mysqli_stmt->store_result(); //将一个变量绑定到一个prepared语句上用于结果存储 $mysqli_stmt->bind_result($id,$title); while ($mysqli_stmt->fetch()) { echo $id.' :'.$title.'<br/>'; } }
以上就是php mysqli扩展之预处理实例详解的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product