2013-03-22 81 views
0

我一直为LastInsertedID取零,我认为这是因为我正在使用mysql存储过程。这里是我的代码:PHP MYSQL PDO lastInsertId在使用过程插入行时返回0

// Set up a new MYSQL PDO Database Connection 
$dbConnection = new PDO('mysql:host=localhost;dbname=database;charset=UTF8', 'username', 'password'); 
//turn off emulation for prepared statement and set error mode option 
$dbConnection->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 
$dbConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

//Create a statement and prepare it with parameters 
$stmt = $dbConnection->prepare("CALL AddMovieSet(:UserID, :SelectedLibraryID, :txtName, :txtNotes);"); 
$stmt->bindValue(':UserID', $_SESSION["UserID"], PDO::PARAM_STR); 
$stmt->bindValue(':SelectedLibraryID', $_SESSION["SelectedLibraryID"], PDO::PARAM_STR); 
$stmt->bindValue(':txtName', $_GET["txtName"], PDO::PARAM_STR); 
$stmt->bindValue(':txtNotes', $_GET["txtNotes"], PDO::PARAM_STR); 
//execute the prepared statement 
$stmt->execute(); 

//the stored procedure successfully inserts a row 
$Name=$_GET["txtName"]; 
$Notes=$_GET["txtNotes"]; 
$InsertedID=$dbConnection->lastInsertId(); 
//$InsertedID is always zero, the table I am inserting a row into has an AUTO_INCREMENT for the first column. 

回答

0

有时,PHP和PDO可以用马车和lastInsertID()存储过程。尝试使用此MySQL调用代替:

"SELECT LAST_INSERT_ID();"