批改狀態(tài):合格
老師批語:
預(yù)處理實現(xiàn)新增,更新與刪除操作
新增操作使用:INSERT
更新操作使用:UPDATE
刪除操作使用:DELETE
預(yù)處理新增操作:mysqli_query2.php
<?php /醫(yī)院 * 預(yù)處理 * 1.預(yù)處理技術(shù),可以將動態(tài)變量,從SQL語句中的分離出來,單獨操作 * 2.解決了SQL注入的安全問題 * 3.預(yù)處理操作是通過一個叫預(yù)處理對象的工具來操作的: STMT * * 基本步驟: * 1.創(chuàng)建stmt預(yù)處理對象 * 2.檢測SQL語句 * 3.參數(shù)綁定 * 4.執(zhí)行查詢 * 5.注銷stmt預(yù)處理對象 * 6.關(guān)閉數(shù)據(jù)庫連接 * * 寫操作:以INSERT為例,UPDATE/DELETE與之類似,僅語句不同罷了 * 作業(yè):修改本案例為更新和刪除操作 */ //1.連接數(shù)據(jù)庫 require 'mysqli_connect.php'; //2.準備SQL語句,將變量部分使用占位符進行代替 $sql = "INSERT IGNORE staff SET name=?, sex=?, age=?,salary=?;"; $name = '楊康'; $sex = 0; $age = 28; $salary = 4800; //3.創(chuàng)建并初始化預(yù)處理對象stmt $stmt = mysqli_stmt_init($db); //4.用stmt對象檢測預(yù)處理語句是否正確,成功返回true,錯誤返回false if (mysqli_stmt_prepare($stmt, $sql)) { /* 將變量與SQL語句中的占位符進行綁定 */ mysqli_stmt_bind_param($stmt, "siii", $name,$sex,$age,$salary); /* 執(zhí)行SQL語句 */ if (mysqli_stmt_execute($stmt)) { //判斷是否執(zhí)行成功:受影響的記錄數(shù)量 if (mysqli_stmt_affected_rows($stmt) > 0) { echo '新增成功,主鍵是:'.mysqli_stmt_insert_id($stmt); } else { echo '沒有新增任何數(shù)據(jù)'; } } else { //返回SQL執(zhí)行階段的錯誤 exit(mysqli_stmt_errno($stmt).':'.mysqli_stmt_error($stmt)); } } else { //返回SQL檢測階段的錯誤 exit(mysqli_stmt_errno($stmt).':'.mysqli_stmt_error($stmt)); } /* 注銷stmt對象 */ mysqli_stmt_close($stmt); /* 關(guān)閉數(shù)據(jù)庫連接 */ mysqli_close($db);
點擊 "運行實例" 按鈕查看在線實例
預(yù)處理更新操作:mysqli_update.php
<?php /醫(yī)院 * 更新數(shù)據(jù)表中的數(shù)據(jù) * 注意: 更新與新增不同,它是基于查詢來實現(xiàn)的,推薦也必須要有更新條件 * 用到的函數(shù): * 1.mysqli_query(), * 2.mysqli_errno(),mysqli_error(), * 3.mysqli_affected_rows(), * 4.mysqli_close() */ //1.連接數(shù)據(jù)庫 require '../0423_mysql/mysqli_connect.php'; //2.創(chuàng)建SQL語句的模板 $sql = 'UPDATE IGNORE staff SET name=?,sex=?,age=?,salary=? WHERE staff_id=4'; $name='郭湘'; $sex=1; $age=21; $salary=5000; //3.創(chuàng)建stmt對象:將SQL語句轉(zhuǎn)為對象 $stmt = mysqli_stmt_init($db); //4.用stmt對象檢測當前預(yù)處理語句是否正確,成功返回true,錯誤返回false if(mysqli_stmt_prepare($stmt, $sql)) { //將變量與語句模板中的占位符進行綁定,s:字符串,i:整數(shù), d:小數(shù) mysqli_stmt_bind_param($stmt,'siii', $name, $sex, $age, $salary); //5.執(zhí)行SQL if(mysqli_stmt_execute($stmt)) { //成功返回更新成功的記錄數(shù)量 if(mysqli_stmt_affected_rows($stmt)>0) { echo "成功更新".mysqli_stmt_affected_rows($stmt)."條記錄"; } else {//錯誤返回false沒有記錄被更新 echo "沒有記錄被更新"; } } else{ exit(mysqli_stmt_erron($stmt).':'.mysqli_stmt_error($stmt)); } } else{ exit(mysqli_stmt_erron($stmt).':'.mysqli_stmt_error($stmt)); } //注銷stmt對象 mysqli_stmt_close($stmt); //關(guān)閉連接 mysqli_close($db); ?>
點擊 "運行實例" 按鈕查看在線實例
使用預(yù)處理技術(shù)實現(xiàn)刪除操作:mysqli_delete.php
<?php //1.連接數(shù)據(jù)庫 require '../0423_mysql/mysqli_connect.php'; //2.準備SQL語句,必須帶條件; $sql = 'DELETE FROM staff WHERE staff_id=?'; $staff_id=4; //3. $stmt = mysqli_stmt_init($db); //3.執(zhí)行查詢,成功返回true,失敗返回false if (mysqli_stmt_prepare($stmt, $sql)) { /* 將變量與SQL語句中的占位符進行綁定 */ mysqli_stmt_bind_param($stmt, "i", $staff_id); /* 執(zhí)行SQL語句 */ if (mysqli_stmt_execute($stmt)) { //判斷是否執(zhí)行成功:受影響的記錄數(shù)量 if (mysqli_stmt_affected_rows($stmt) > 0) { echo '成功刪除'.mysqli_stmt_affected_rows($stmt).'條記錄'; } else { echo '沒有可刪除記錄'; } } else { //返回SQL執(zhí)行階段的錯誤 exit(mysqli_stmt_errno($stmt).':'.mysqli_stmt_error($stmt)); } } else { //返回SQL檢測階段的錯誤 exit(mysqli_stmt_errno($stmt).':'.mysqli_stmt_error($stmt)); } /* 注銷stmt對象 */ mysqli_stmt_close($stmt); /* 關(guān)閉數(shù)據(jù)庫連接 */ mysqli_close($db); ?>
點擊 "運行實例" 按鈕查看在線實例
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號