当前位置:Gxlcms > 数据库问题 > MySQLi面向对象实践---预处理

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

时间:2021-07-01 10:21:17 帮助过:23人阅读

面向对象的预处理和面向过程的预处理一样,只是转换一种表现形式而已,可以参照一下面向过程的方法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   关闭   

人气教程排行