1. 程式人生 > >MySQLi面向過程實踐---預處理

MySQLi面向過程實踐---預處理

寫法 參數 字符 註解 cut insert sql -- 精度

MySQLi預處理涉及到以下幾個函數:

mysqli_stmt mysqli_prepare ( mysqli $link , string $query )

bool mysqli_stmt_bind_param ( mysqli_stmt $stmt , string $types , mixed &$var1 [, mixed &$... ] )

bool mysqli_stmt_execute ( mysqli_stmt $stmt )

bool mysqli_stmt_close ( mysqli_stmt $stmt )

mixed mysqli_query ( mysqli $link , string $query)

bool mysqli_set_charset ( mysqli $link , string $charset )

具體的示例代碼如下:

<?php 
	$conn=mysqli_connect("localhost","root","root","test");
	
	//設置字符集	
	mysqli_set_charset($conn,"utf8");

	//預處理,註意返回的類型是mysqli_stmt
	$stmt=mysqli_prepare($conn,"insert into aaa values (?,?)");

	// 綁定參數,第二個參數,請看下文註解
	// 註意,在$id,$name等變量的位置,不能出現常亮
	// mysqli_stmt_bind_param($stmt,"is",5,‘aaaaa‘);寫法是錯誤的
	mysqli_stmt_bind_param($stmt,"is",$id,$name);

	// 參數賦值
	$id="99";$name="xxxxxx";

	//執行預處理
	mysqli_stmt_execute($stmt);

	//關閉預處理,
	//註意關閉的不是數據庫連接,而是“預處理”
	mysqli_stmt_close($stmt);

	//關閉數據庫連接
	mysqli_close($conn);
 ?>

這裏註意綁定參數的時候,

bool mysqli_stmt_bind_param ( mysqli_stmt $stmt , string $types , mixed &$var1 [, mixed &$... ] )

第二個參數是類型(type),類型有4個類型,分別是:

  i(整型integer)、

  d(雙精度浮點數double)、

  s(字符串string)、

  b(二進制大數據塊blob)

每一個類型,即每個字母(i/d/s/b)對應一個參數,每個參數的位置所對應的類型要正確,順序別顛倒

MySQLi面向過程實踐---預處理