MYSQLI:mysqli預先處理語句

來源:互聯網
上載者:User

標籤:

應用環境 mysqli預先處理功能(大量資料處理時使用)
步驟  
a)mysqli串連資料庫 $conn= new mysqli(‘localhost‘,‘root‘,‘123456‘,‘apple‘);
b)設定編碼 $conn->set_charset(‘utf8‘);
c)發送query語句

使用$conn->prepare($sql)這個方法表示是預先處理,如果涉及到取值,必須指定查詢欄位

$sql = "select * from product_info where product_id=?";

$stmt = $conn->prepare($sql);

d)提供條件

比如上句用了?作為不確定的值,就需要指定

$stmt->bind_param(‘i‘,$product_id);        用變數綁定?表示的值,i表示整型,d表示浮點型,b代表二進位,s代表其它的所有

$product_id=$_GET[‘product_id‘];           指定變數的值

 

e)綁定結果格式並執行

$stmt->bind_result($product_id,$product_info,$product_trans,$product_price);   綁定結果格式

$stmt->execute();                發送變數,此時伺服器的語句已經完整了

 f)從sql伺服器中取回結果  

預先處理語句會將結果集儲存在sql開闢的記憶體中,php開闢的記憶體無法直接使用(count是php函數,不是sql函數,無法直接與sql記憶體互動),預設情況是每次執行fetch()會從sql記憶體中取出一行,但是不使用store_result()就無法擷取行數.當然如果你的結果只有一行,可以無視這一句.請記住:在mysqli預先處理中取出資料,只能使用fetch()這是因為mysqli_stmt類並沒有其它取值方法

$stmt->store_result();     //如果用變數接收的話,會發現成功了顯示1,否則顯示0(所以用變數接受的值並不是結果集)

 g)擷取結果集行數  $count = $stmt->num_rows();
 h)輸出結果
while($field=$result->fetch_field()){
echo $field->name."--"; //輸出資料庫欄位資訊
}
while($stmt->fetch()){
echo "$product_id--$product_info--$product_trans--$product_price"; //輸出取出資料資訊
}

前面說了,既然要取值,當然前面query指定了查詢欄位,上句的變數用上了
 i)關閉mysqli連結  
$conn->close();
   

MYSQLI:mysqli預先處理語句

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.