PDOStatement :: bindParam () не устанавливает значение AI из MySQL вставки? - PullRequest
0 голосов
/ 23 марта 2010

У меня есть простой оператор вставки, использующий класс 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.

У меня очень похожая инструкция для другой таблицы, и она правильно возвращает столбец идентификатора.

Есть мысли?

1 Ответ

1 голос
/ 23 марта 2010

Если id автоинкрементирован, вам не нужно указывать его при вставке в таблицу.Какое значение вы присваиваете $demo->id?

Если вам нужен идентификатор вставленной записи, вы можете получить его, используя <a href="http://www.php.net/manual/en/pdo.lastinsertid.php" rel="nofollow noreferrer">PDO::lastInsertId</a>, а затем установите в поле $id объекта значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...