<?php $mysqli = new Mysqli(); $mysqli->connect("localhost","root","root","test"); if ( $mysqli->connect_errno ){ die( $mysqli->connect_error ); } $mysqli->set_charset("utf8"); $sql = "insert into mysqli (id, name) values (null, 'liming')"; $res = $mysqli->query($sql); var_dump($res); if( $res ){ echo $mysqli->insert_id; } else { echo "error:".$mysqli->errno." : ".$mysqli->error; } $mysqli->close(); ?>
<?php $mysqli = new Mysqli(); $mysqli->connect("localhost","root","root","test"); if ( $mysqli->connect_errno ){ die( $mysqli->connect_error ); } $mysqli->set_charset("utf8"); $sql = "update mysqli set name = 'doUpdate' where id>8;"; $res = $mysqli->query($sql); var_dump($res); if( $res ){ echo $mysqli->affected_rows; //返回上一條SQL語句影響的記錄條數 } else { echo "error:".$mysqli->errno." : ".$mysqli->error; } $mysqli->close(); ?>
<?php $mysqli = new Mysqli(); $mysqli->connect("localhost","root","root","test"); if ( $mysqli->connect_errno ){ die( $mysqli->connect_error ); } $mysqli->set_charset("utf8"); $sql = "delete from mysqli where id>8;"; $res = $mysqli->query($sql); var_dump($res); if( $res ){ echo $mysqli->affected_rows; //返回上一條SQL語句影響的記錄條數 } else { echo "error:".$mysqli->errno." : ".$mysqli->error; } $mysqli->close(); ?>
對於affected_rows的值有這麼幾種狀況,以刪除記錄爲例php
1 ->SQL語句正常執行,刪除的記錄數大於0,則affected_rows爲受影響的記錄數mysql
2 ->SQL語句正常執行,沒有一條記錄符合條件,也就是刪除的記錄爲0,則affected_rows爲0sql
3 ->SQL語句錯誤,也就是說SQL語句沒有真正執行,由於出現錯誤就stop了,此時affected_rows的值爲-1數據庫
insert_id是指當前獲得SQL語句執行前,數據庫表中的auto_increment值(該值能夠經過在數據庫命令行中執行show create table tableName來查看),而不是SQL語句插入以後auto_increment的值。spa
假設第一次數據庫爲空,插入1條數據以後,id變爲1,而auto_increment變爲2,而後經過insert 語句一次性的插入多條數據,而後再獲取auto_increment的值(即insert_id),值不會變爲最後插入的那一條數據的主鍵自增的id,而是執行插入多條數據以前的2。命令行
若是表中沒有auto_increment,則insert_id返回0。blog