博主信息
博文 30
粉丝 0
评论 0
访问量 27953
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
php链接数据库之预处理操作
深海巨兽皮皮虾的博客
原创
1525人浏览过

    本例为预处理操作,预处理操作主要作用为防止SQL注入,时SQL语句与数据脱离

    写操作(以新增为例):

$data = ['name'=>'陈真','email'=>'809332774@qq.com','password'=>'223456'];
//用?代替数据
$sql = "INSERT user1 SET name=?,email=?,password=sha1(?)";
//准备sql语句生成 mysql_stmt对象
$mysql_stmt = $mysql->prepare($sql);
//绑定参数 bind_param(type,data);
$mysql_stmt->bind_param("sss",$data['name'],$data['email'],$data['password']);
//执行
if($mysql_stmt->execute()){
    echo "成功插入".$mysql_stmt->affected_rows."条数据,新增主键ID为".$mysql_stmt->insert_id;
}else{
    echo "插入失败,错误为: $mysql_stmt->error";
}
$mysql->close();

    总结:

 1.$mysql_stmt = $mysql->prepare($sql) //生成$mysql_stmt对象
 2.$mysql_stmt->bind_param(type,data) //type对照data排列先后 列出数据类型 i整形 s字符
 3.$mysql_stmt->execute();
 success: $mysql_stmt->afftect_rows .insert_id
 error : $mysql_stmt->error

    print_f($mysql_stmt);生成如下对象:

mysqli_stmt Object
(
    [affected_rows] => 0
    [insert_id] => 0
    [num_rows] => 0
    [param_count] => 3
    [field_count] => 0
    [errno] => 0
    [error] => 
    [error_list] => Array
        (
        )

    [sqlstate] => 00000
    [id] => 1
)

 读操作(查询):

$sql = "SELECT `id`,`name`,`email` FROM user1 WHERE id=? AND name=?";
$data = [1,"wangkai"];
//绑定
$mysql_stmt = $mysql->prepare($sql);
$mysql_stmt->bind_param('is',$data[0],$data[1]);
if($mysql_stmt->execute()){
    //存储结果集
    $mysql_stmt->store_result();
    //判断结果集数量
    if($mysql_stmt->num_rows>0){
        echo '查询到'.$mysql_stmt->num_rows.'条数据';
        //绑定结果集对应的字段
        $mysql_stmt->bind_result($id,$name,$email);
        //fetch()取出一条数据,fetchA
        while($mysql_stmt->fetch()){
            echo $id.$name.$email;
        };
        $mysql_stmt->free_result();
        $mysql_stmt->close();
    }else{
        echo '没有查询到数据';
    }
}else{
    echo '查询失败请检查'.$mysql_stmt->error;
}

    总结:

1.$mysql_stmt = $mysql->prepare
2.$mysql_stmt->bind_param();
3.$mysql_stmt->store_result();//存储结果集
3.1 $mysql_stmt->num_rows();//结果集数量
5.$mysql_stmt->bind_result(变量);//为结果集绑定变量
6.$mysql_stmt->fetch() //输出变量,每次输出单条

准备->绑定参数->存储结果集->结果集绑定变量


本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学