0

$db->lastInsertId();またはを使用して lastinsertid 値を取得できません$db->lastInsertId('fid');

$stmt = $db->stmt_init();   

$sql = "INSERT INTO ch_files_details (name,extension,size,parent) VALUES (?,?,?,?)";

$stmt = $db->prepare($sql) or die($db->error());

$stmt->bind_param('ssii', $filename, $extension, $filesize, $parent);  

$stmt->execute();

$fid = $db->lastInsertId();

何かが足りないか、間違っていますか?

テーブルに挿入することはできますが、最後に挿入された ID を取得できません。

Table Definition: 
`ch_files_details` (
`fid` bigint(20) NOT NULL AUTO_INCREMENT,
`name` text NOT NULL,
`extension` text NOT NULL,
`size` bigint(20) NOT NULL,
`parent` bigint(20) NOT NULL,
PRIMARY KEY (`fid`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=26 ;
4

1 に答える 1

2

PDO::lastInsertIdPDO を使用していないため、ここでは機能しません。上記のコードは PDO ではなく MySQLi コードです。を使用しmysqli::$insert_idます。

// This is all MySQLi prepared statement code, not PDO!!!
// PDO uses bindParam(), not bind_param(), doesn't have stmt_init(), and doesn't use the 'ssii' type strings for binding
$stmt = $db->stmt_init();   
$sql = "INSERT INTO ch_files_details (name,extension,size,parent) VALUES (?,?,?,?)";
$stmt = $db->prepare($sql) or die($db->error());
$stmt->bind_param('ssii', $filename, $extension, $filesize, $parent);  
$stmt->execute();

// insert_id is a property of the connection MySQLi object
$fid = $db->insert_id;

詳細については、 MySQLiのマニュアルを参照してください。ある時点で、間違ったドキュメント セットになってしまいました。

于 2012-11-17T14:00:14.757 に答える