mysqli 预处理语句(prepared)

     mysqli 函数据支持prepared 语句的使用,它们对于在执行大量具有不同数据的相同查询时,可以提高执行速度。他们也可以免受SQL 注入

    prepared 语句的基本思想是可以向mysql 发送需要执行的查询模板,然后在单独发送数据。我们可以向相同的prepared 语句发送大量相同的数据;这个特性对批处理的插入操作来说是非常有用的。

一.把mysqli 连接,单例封装到一个类里面

dbconn = mysqli_connect ( self::HOSTNAME, self::USERNAME, self::PASSWORD, self::DBNAME );
		$this->dbconn->set_charset ( self::MYSQL_CHARSET );
	}
	/**
	 * 获取mysql 连接实例
	 *
	 * return @mysqli
	 */
	public function getDbconn() {
		return $this->dbconn;
	}
	/**
	 * 放克隆
	 */
	private function __clone() {
	}
	/**
	 * 获取数据库的连接实例
	 *
	 * @return DBconnectsinglon
	 */
	public static function getDbinstance() {
		if (! (self::$instance instanceof self)) {
			self::$instance = new self ();
		}
		return self::$instance;
	}
}
?>

=. 插入的prepared 下面我们就讲解这个语句吧
getDbconn ()->prepare ( $query );
$stmt->bind_param ( 'sss', $tilte, $content, $tim );
$stmt->execute ();
$ro = $stmt->affected_rows;
echo $ro;

当设置查询时不是替换前面已经生成的变量,而是在每一段数据的位置设置问好,在这些问号的周围,不能在设置问号或其他的分界符号

$stmt = $db->getDbconn ()->prepare ( $query );      构建一个语句对象或需要用来完成实际处理的资源

$stmt->bind_param()  告诉php那些变量应该被问号所代替,第一个参数是一个格式化字符串,与printf()使用的格式化字符串不同。在这里,所指替代问号变量的类型,s 表示

字符串  d 表示双精度 i表示整数  b表示 blog 在这个参数后,必须列出与语句中的问号数量相同的变量。他们将依次被替换.

$stmt->execute(); 函数 将真正运行这个查询。我们可以访问受影响行数并关闭这个语句。

你可能感兴趣的:(php)