MySQLi面向過程實踐---預處理
阿新 • • 發佈:2017-09-22
寫法 參數 字符 註解 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面向過程實踐---預處理