PDOStatement :: bindParam()没有设置MySQL插入的AI值?

时间:2010-03-23 07:02:17

标签: php mysql pdo

我有一个使用PDO php类的简单插入语句。

'id'列是带有自动增量的标识(doy)。

$statement = $db->prepare('INSERT INTO demographics (id,location_id,male,ethnicity_id,birthyear) VALUES (:id,:location_id,:male,:ethnicity_id,:birthyear)');

$statement->bindParam(':id',$demo->id,PDO::PARAM_INT,4);
$statement->bindParam(':location_id', $demo->locationid,PDO::PARAM_INT);
$statement->bindParam(':male',$demo->male,PDO::PARAM_BOOL);
$statement->bindParam(':ethnicity_id',$demo->ethnicityid,PDO::PARAM_INT);
$statement->bindParam(':birthyear',$demo->birthyear,PDO::PARAM_INT);
$statement->execute();  

print_r($demo);

即使语句正确执行(行正确写入),$ demo-> id也为null。

我对另一个表有一个非常相似的语句,它正确返回id列。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

如果id是自动增量的,则在插入表格时无需指定它。您对$demo->id有什么价值?

如果您需要插入条目的ID,可以使用PDO::lastInsertId检索它,然后使用值设置对象的$id字段。