一、什麼是affectedrows?
在將資料庫的操作更新到PHP頁面上時,我們可能會關注每個操作更新了多少行數據。affectedrows是指資料庫操作執行後,受影響的數據行數,它的值只能在腳本使用查詢後所返回的行數相同。這意味著,操作成功時,affectedrows返回剛才在資料庫中操作的記錄行數。使用affectedrows是一種有效測量查詢語句執行所影響的行數的方法,尤其是對於UPDATE、 DELETE和INSERT INTO語句,在PHP中,可以通過mysqli_ affected_ rows()或PDO::rowCount()函數獲取affectedrows的值。
二、使用mysqli_affected_rows()實現affectedrows測量
mysqli連接對象是一種用於訪問MySQL資料庫伺服器的連接對象。當使用mysqli操作資料庫時,可以用mysqli_affected_ rows()函數返回前一次操作所影響的記錄行數。
//建立mysqli連接對象 $conn = mysqli_connect('localhost','username','password','database'); if($conn) { //執行SQL語句 $sql = "UPDATE user SET age =32 WHERE id =1"; mysqli_query($conn,$sql); //獲取更新行數 $num = mysqli_affected_rows($conn); //輸出更新行數 echo $num; //關閉mysqli連接 mysqli_close($conn); }
三、使用PDO::rowCount()實現affectedrows測量
PDO是PHP Data Objects的縮寫,是PHP5中一個為數據訪問抽象和資料庫交互提供了一種簡單和一致的方法的輕量級框架。使用PDO連接資料庫時,可以用PDO::rowCount()函數返回前一次操作所影響的記錄行數。
//建立PDO連接對象 $conn =new PDO("mysql:host=localhost;dbname=database",'username','password'); if($conn){ //執行SQL語句 $sql = "UPDATE user SET age =32 WHERE id =1"; $conn->exec($sql); //獲取更新行數 $num = $conn->rowCount(); //輸出更新行數 echo $num; //關閉PDO連接 $conn= null; }
四、使用affectedrows測量INSERT INTO語句的行數
使用INSERT INTO語句時,默認情況下,受影響的行數為1,因為INSERT INTO語句只插入一行數據。但是,如果使用INSERT INTO語句插入多行數據,則affectedrows將返回插入的行數。
//建立mysqli連接對象 $conn = mysqli_connect('localhost','username','password','database'); if($conn) { //執行SQL語句 $sql = "INSERT INTO user(id, name, age) VALUES ('2','zhangsan','18'), ('3','lisi','19'), ('4','wangwu','20')"; mysqli_query($conn,$sql); //獲取插入行數 $num = mysqli_affected_rows($conn); //輸出更新行數 echo $num; //關閉mysqli連接 mysqli_close($conn); }
五、使用affectedrows測量DELETE語句的行數
使用DELETE語句可以刪除一個或多個記錄行。在這種情況下,affectedrows會返回刪除的行數。
//建立mysqli連接對象 $conn = mysqli_connect('localhost','username','password','database'); if($conn) { //執行SQL語句 $sql = "DELETE FROM user WHERE age >20"; mysqli_query($conn,$sql); //獲取刪除行數 $num = mysqli_affected_rows($conn); //輸出刪除行數 echo $num; //關閉mysqli連接 mysqli_close($conn); }
六、總結
使用affectedrows可以第一時間獲知資料庫操作對於表所影響的行數,這樣便於針對性的排除一些問題, 同時,因為affectedrows是資料庫返回的結果,所以它的準確性是可以保證的,能夠避免像手動檢查操作結果的時候這樣的人為出錯。
原創文章,作者:LURS,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/131615.html