码迷,mamicode.com
首页 > 数据库 > 详细

MySQLi面向对象实践---预处理

时间:2017-09-23 00:03:29      阅读:252      评论:0      收藏:0      [点我收藏+]

标签:roo   where   type   关闭数据库   ...   blog   方法   failed   关闭   

面向对象的预处理和面向过程的预处理一样,只是转换一种表现形式而已,可以参照一下面向过程的方法http://www.cnblogs.com/-beyond/p/7577155.html

面向对象的预处理涉及以下几个函数:

mysqli_stmt mysqli::prepare ( string $query )

bool mysqli_stmt::bind_param ( string $types , mixed &$var1 [, mixed &$... ] )

bool mysqli_stmt::execute ( void )

mysqli_result mysqli_stmt::get_result ( void )

void mysqli_stmt::free_result ( void )

bool mysqli_stmt::close ( void )

void mysqli_result::free_result ( void )

具体用法如下

<?php 
	$db=new mysqli("localhost","root","root","test");

    //预处理(增删改)
    $sql="delete from aaa where uid = ?;";
    $stmt=$db->prepare($sql);
    $uid=4;
    $stmt->bind_param(‘i‘,$uid);
    // $stmt->bind_param(‘i‘,4);wrong
    $stmt->execute();
    $stmt->free_result();
    $stmt->close();

    //预处理(查)
    $sql="select * from aaa where uid >?;";
    $stmt=$db->prepare($sql);
    $uid=1;
    $stmt->bind_param("i",$uid);
    if($stmt->execute()){
	    echo "there are ".$stmt->num_rows." rows\n";
	    echo "there are ".$stmt->field_count." fields\n";
	   	$result=$stmt->get_result();
	   	while(list($id,$name)=$result->fetch_array()){
	   		echo $id."=>".$name."\n";
	   	}
	   $stmt->free_result();
	   $result->free_result();
    } else {
    	echo "failed to execute\n";
    }
	$stmt->close();

	//关闭数据库
	$db->close();
 ?>

其中关于参数绑定,还有读取结果集的问题,请查看前两篇博客

MySQLi面向对象实践---预处理

标签:roo   where   type   关闭数据库   ...   blog   方法   failed   关闭   

原文地址:http://www.cnblogs.com/-beyond/p/7577357.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!