Получить последнюю запись в mysql
-
13-12-2019 - |
Вопрос
Используя этот php-код:
try{
$dbh = new PDO("mysql:host=$host;dbname=$dbname",$user,$pass);
$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
// INSERT CLEAN DATA INTO TABLE…
$sth = $dbh->prepare("
INSERT INTO Fan(fanNm,fanEmail,fanPass,fanDynamSalt)
VALUES('$userName','$userEmailAddress','$userPassword','$dynamSalt')"
);
$sth->execute();
////////////////////////////////////////////////////////////////////
## Set Session Var for this PK ID in Fan table that is being created ##
////////////////////////////////////////////////////////////////////
$_SESSION['newUserSessID'] = mysql_insert_id();
echo "<strong style='color:#fff;'>".$_SESSION['newUserSessID']."</strong>";
} //try
catch(PDOException $e){
echo "Oops, We're experiencing an error.";
file_put_contents('/PDODBConnectionErrors.txt', $e->getMessage(), FILE_APPEND);
} //catch
Он отлично вставляется в базу данных, но я использую echo "<strong style='color:#fff;'>".$_SESSION['newUserSessID']."</strong>";
чтобы повторить это значение, и оно ВСЕГДА возвращает ноль.
Даже если я убегу :
SELECT LAST_INSERT_ID( )
FROM Fan
LIMIT 0 , 30
Это дает мне такой результат, как
0
0
(поскольку в таблице базы данных есть две строки)
Кто-нибудь?
Решение
Вы не должны использовать mysql_insert_id
поскольку это не является частью PDO (это то, что вы используете для взаимодействия с базой данных в данном случае).
Вместо этого используйте PDO::lastInsertId()
:
$_SESSION['newUserSessID'] = $dbh->lastInsertId();
Дополнительная информация: http://www.php.net/manual/en/pdo.lastinsertid.php
Другие советы
Ты смешиваешь PDO
с общим MySQL
функции.Проблема в том, что mysql_last_insert
не имеет ресурса, и поэтому он возвращает 0 для значения false.Не смешивайте PDO
с общим MySQL
функции.
Чтобы получить последний идентификатор вставки в PDO, сделайте это:$dbh->lastInsertId()