mysqli预处理详解

2 篇文章 0 订阅

mysqli预处理的学习主要是指mysqli_stmt对象的方法的使用,下面我们通过一个例子来分析各个方法的使用方法和作用:
代码如下:

/* 连接mysql */
$mysqli = new Mysqli(DB_HOST,DB_USER,DB_PWD,DB_NAME);

if($mysqli->connect_errno){
    die('Connect Error : '.$mysqli->connect_error);
}

/* 预处理sql */
$sql = "SELECT * FROM user WHERE id>=?";

/* 获取mysqli_statement对象*/
$stmt = $mysqli->prepare($sql);

/* 绑定参数 */
$stmt->bind_param('i',$id);

/* 定义参数 */
$id = 6;

/* 执行上面的sql语句 */
if($stmt->execute()) {
    /* 
    默认select的结果集保存在mysql服务器内存中,并且通过fetch
    一条一条的返回给php,如果想在php中对该结果集进行操作,可以
    使用下面的方法,该函数内部对mysqli_statement对象的部分属
    性重置为真实的结果,例如num_rows,affected_rows等属性
    */
    $stmt->store_result();

    echo '共有'.$stmt->num_rows.'行<br >';//输出结果数

    echo '共影响'.$stmt->affected_rows.'行<br >';//输出影响行数

    /* 将结果集中的值付给对应的变量 */
    $stmt->bind_result($id,$name,$password);

    /* 移动结果集的内部指针到最后 */
    $stmt->data_seek($stmt->num_rows-1);

    /* 使用fetch一个个获取结果集中的内容 */
    while($stmt->fetch()) {
        echo '用户编号:',$id,'<br />';
        echo '用户名:',$name,'<br />';
        echo '用户密码:',$password,'<br />';
        echo '<hr />';
    }

    /* 释放由store_result产生的结果集 */
    $stmt->free_result();

    /* 关闭mysqli_statement对象 */
    $stmt->close();
}

/* close connection */
$mysqli->close();

分析:在上面的例子中几乎涵盖了预处理所有常用的方法,希望大家多思考预处理机制的原理,这样就能知道在适当的时候使用合适的方法了。

好啦,今天就说到这啦!希望大家阅读愉快,还有,请大家不要吝啬自己的意见,记得给我评论哦,一起进步,么么哒。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当使用MySQLi进行增删改查时,建议使用预处理语句来保护应用程序免受SQL注入攻击。以下是使用MySQLi预处理语句的示例: 1. 连接数据库 ```php $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "myDB"; // 创建连接 $conn = mysqli_connect($servername, $username, $password, $dbname); // 检测连接 if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } ``` 2. 执行查询 ```php // 准备SQL语句和绑定参数 $stmt = $conn->prepare("SELECT * FROM myTable WHERE id=?"); $stmt->bind_param("i", $id); // 设置参数并执行查询 $id = 1; $stmt->execute(); // 获取结果集 $result = $stmt->get_result(); // 输出结果 while ($row = $result->fetch_assoc()) { echo "id: " . $row["id"] . " - Name: " . $row["name"] . "<br>"; } ``` 3. 执行插入 ```php // 准备SQL语句和绑定参数 $stmt = $conn->prepare("INSERT INTO myTable (name, email, phone) VALUES (?, ?, ?)"); $stmt->bind_param("sss", $name, $email, $phone); // 设置参数并执行插入 $name = "John Doe"; $email = "[email protected]"; $phone = "555-555-5555"; $stmt->execute(); // 输出插入的行数 echo "New records created successfully. Rows inserted: " . mysqli_affected_rows($conn); ``` 4. 执行更新 ```php // 准备SQL语句和绑定参数 $stmt = $conn->prepare("UPDATE myTable SET email=?, phone=? WHERE id=?"); $stmt->bind_param("ssi", $email, $phone, $id); // 设置参数并执行更新 $id = 1; $email = "[email protected]"; $phone = "555-555-5555"; $stmt->execute(); // 输出更新的行数 echo "Records updated successfully. Rows affected: " . mysqli_affected_rows($conn); ``` 5. 执行删除 ```php // 准备SQL语句和绑定参数 $stmt = $conn->prepare("DELETE FROM myTable WHERE id=?"); $stmt->bind_param("i", $id); // 设置参数并执行删除 $id = 1; $stmt->execute(); // 输出删除的行数 echo "Records deleted successfully. Rows affected: " . mysqli_affected_rows($conn); ``` 注意:在使用预处理语句时,要注意使用正确的参数类型。在上面的示例中,“s”表示字符串类型,“i”表示整型。您可以根据需要更改参数类型。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值