Blogger Information
Blog 65
fans 3
comment 4
visits 67614
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
mysqli之预处理
无耻的鱼
Original
1090 people have browsed it

预处理的好处

    • 1.防止SQL注入

    • 2.一条语句多次使用

预处理步骤

    准备工作:连接数据库,准备SQL语句

    1. 创建预处理对象

    2. 检测SQL语句

    3. 参数绑定

    4. 执行操作

    5. 销毁对象

    6. 关闭数据库连接


预处理的增删改查示例

其实呢,预处理的增删改查基本操作都一样

下面呢  我把他们一样的拿出来,

基本样式

1连接数据库,准备SQL语句 sql语句中的值必须为问号,且顺序不能乱

require 'connect.php';

$sql = "INSERT IGNORE aaa SET name=?,age=?,money=?;";

//    给变量赋值
$name= '西施妹妹';
$age=16;
$money=5600;

创建预处理对象/检测SQL语句---这两句是公共样式

//创建stmt预处理对象
$stmt = mysqli_stmt_init($db);

//检测SQL语句
//mysqli_stmt_prepare()
if(mysqli_stmt_prepare($stmt,$sql)){

参数绑定--参数就是根据你要与处理得参数来定,注意一下他们的类型

   //讲变量与SQL语句的占位符进行绑定
//    mysqli_stmt_bind_param()
    mysqli_stmt_bind_param($stmt,"sii",$name,$age,$money);

执行操作 ----增删改的执行是一样的,查的不一样,继续往下看 ,下边上实例

//    执行SQL语句
//    mysqli_stmt_execute()
    mysqli_stmt_execute($stmt);
    //更新条数
    echo '新增了'.mysqli_stmt_affected_rows($stmt).'条,ID是:'.mysqli_stmt_insert_id($stmt);

销毁对象/关闭数据库连接---公共样式

}
//关闭
mysqli_stmt_close($stmt);

mysqli_close($db);

光这样看也看不出个啥  下面把增删改查的实例放上来瞅瞅

查的实例

<?php
/**
 * User: Z先生
 * Date: 2018/4/25
 * 数据查询
 */
require 'connect.php';

$sql = "SELECT name,age FROM aaa WHERE id=?;";

//    给变量赋值
$id = 34;

//创建stmt预处理对象
$stmt = mysqli_stmt_init($db);

//检测SQL语句
//mysqli_stmt_prepare()
if(mysqli_stmt_prepare($stmt,$sql)){

    //讲变量与SQL语句的占位符进行绑定
//    mysqli_stmt_bind_param()
    mysqli_stmt_bind_param($stmt,"i",$id);



//    执行SQL语句
//    mysqli_stmt_execute()
    mysqli_stmt_execute($stmt);

//    绑定结果变量 SQL查了几个字段这里就设置几个字段
    mysqli_stmt_bind_result($stmt,$name,$age);

//    获取值
    mysqli_stmt_fetch($stmt);

//    输出
    echo $name .'的年龄是'. $age;
        

}
//关闭
mysqli_stmt_close($stmt);

mysqli_close($db);

运行实例 »

点击 "运行实例" 按钮查看在线实例

改的实例

<?php
/**
 * User: Z先生
 * Date: 2018/4/25
 * 数据查询
 */
require 'connect.php';

$sql = "INSERT IGNORE aaa SET name=?,age=?,money=?;";

//    给变量赋值
$name= '西施妹妹';
$age=16;
$money=5600;

//创建stmt预处理对象
$stmt = mysqli_stmt_init($db);

//检测SQL语句
//mysqli_stmt_prepare()
if(mysqli_stmt_prepare($stmt,$sql)){

    //讲变量与SQL语句的占位符进行绑定
//    mysqli_stmt_bind_param()
    mysqli_stmt_bind_param($stmt,"sii",$name,$age,$money);

//    执行SQL语句
//    mysqli_stmt_execute()
    mysqli_stmt_execute($stmt);

//更新条数
    echo '新增了'.mysqli_stmt_affected_rows($stmt).'条,ID是:'.mysqli_stmt_insert_id($stmt);


}
//关闭
mysqli_stmt_close($stmt);

mysqli_close($db);

运行实例 »

点击 "运行实例" 按钮查看在线实例

删的实例

<?php
/**
 * User: Z先生
 * Date: 2018/4/25
 * 数据查询
 */
require 'connect.php';

$sql = "DELETE FROM aaa  WHERE id=?;";

//    给变量赋值
$id = 34;

//创建stmt预处理对象
$stmt = mysqli_stmt_init($db);

//检测SQL语句
//mysqli_stmt_prepare()
if(mysqli_stmt_prepare($stmt,$sql)){

    //讲变量与SQL语句的占位符进行绑定
//    mysqli_stmt_bind_param()
    mysqli_stmt_bind_param($stmt,"i",$id);


//    执行SQL语句
//    mysqli_stmt_execute()
    mysqli_stmt_execute($stmt);

    //更新条数
    echo '删除了'.mysqli_stmt_affected_rows($stmt).'条';


}
//关闭
mysqli_stmt_close($stmt);

mysqli_close($db);

运行实例 »

点击 "运行实例" 按钮查看在线实例

改的实例

<?php
/**
 * User: Z先生
 * Date: 2018/4/25
 * 数据查询
 */
require 'connect.php';

$sql = "UPDATE aaa SET name=? WHERE id=?;";

//    给变量赋值
$name = "刘大姐";
$id = 34;

//创建stmt预处理对象
$stmt = mysqli_stmt_init($db);

//检测SQL语句
//mysqli_stmt_prepare()
if(mysqli_stmt_prepare($stmt,$sql)){

    //讲变量与SQL语句的占位符进行绑定
//    mysqli_stmt_bind_param()
    mysqli_stmt_bind_param($stmt,"si",$name,$id);


//    执行SQL语句
//    mysqli_stmt_execute()
    mysqli_stmt_execute($stmt);

    //更新条数
    echo '更新了'.mysqli_stmt_affected_rows($stmt).'条';


}
//关闭
mysqli_stmt_close($stmt);

mysqli_close($db);

运行实例 »

点击 "运行实例" 按钮查看在线实例


Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post