PHP – دریافت شناسه آخرین رکورد درج شده در MySQL
وقتی دادهای را در یک جدول با فیلد AUTO_INCREMENT
درج میکنید، ممکن است بخواهید شناسه (ID) رکورد آخرین درج شده را بلافاصله بعد از عملیات درج یا بهروزرسانی دریافت کنید. در این مقاله، نحوه دریافت شناسه آخرین رکورد درج شده با استفاده از MySQLi و PDO را بررسی خواهیم کرد.
استفاده از فیلد AUTO_INCREMENT
فرض کنید که جدول “MyGuests” شما به صورت زیر است:
CREATE TABLE MyGuests (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)
در اینجا، ستون “id” به صورت AUTO_INCREMENT
تعریف شده است. هنگامی که رکوردی جدید به این جدول اضافه میشود، MySQL به طور خودکار مقدار این ستون را افزایش میدهد و شما میتوانید این مقدار را دریافت کنید.
دریافت شناسه آخرین رکورد درج شده با استفاده از MySQLi
1. MySQLi به روش شیءگرا
در این مثال، ما از MySQLi به روش شیءگرا برای درج یک رکورد جدید و دریافت شناسه آخرین رکورد درج شده استفاده میکنیم:
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// ایجاد اتصال
$conn = new mysqli($servername, $username, $password, $dbname);
// بررسی اتصال
if ($conn->connect_error) {
die("اتصال ناموفق: " . $conn->connect_error);
}
$sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('John', 'Doe', 'john@example.com')";
if ($conn->query($sql) === TRUE) {
// دریافت شناسه آخرین رکورد درج شده
$last_id = $conn->insert_id;
echo "رکورد جدید با موفقیت ایجاد شد. شناسه آخرین رکورد درج شده: " . $last_id;
} else {
echo "خطا: " . $sql . "<br>" . $conn->error;
}
$conn->close();
?>
2. MySQLi به روش رویهای
در این مثال، ما از MySQLi به روش رویهای برای درج یک رکورد جدید و دریافت شناسه آخرین رکورد درج شده استفاده میکنیم:
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// ایجاد اتصال
$conn = mysqli_connect($servername, $username, $password, $dbname);
// بررسی اتصال
if (!$conn) {
die("اتصال ناموفق: " . mysqli_connect_error());
}
$sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('John', 'Doe', 'john@example.com')";
if (mysqli_query($conn, $sql)) {
// دریافت شناسه آخرین رکورد درج شده
$last_id = mysqli_insert_id($conn);
echo "رکورد جدید با موفقیت ایجاد شد. شناسه آخرین رکورد درج شده: " . $last_id;
} else {
echo "خطا: " . $sql . "<br>" . mysqli_error($conn);
}
mysqli_close($conn);
?>
دریافت شناسه آخرین رکورد درج شده با استفاده از PDO
در این مثال، از PDO برای درج یک رکورد جدید و دریافت شناسه آخرین رکورد درج شده استفاده میکنیم:
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// تنظیم حالت خطا به استثنا
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('John', 'Doe', 'john@example.com')";
// استفاده از exec() زیرا نتیجهای برنمیگردد
$conn->exec($sql);
// دریافت شناسه آخرین رکورد درج شده
$last_id = $conn->lastInsertId();
echo "رکورد جدید با موفقیت ایجاد شد. شناسه آخرین رکورد درج شده: " . $last_id;
} catch(PDOException $e) {
echo $sql . "<br>" . $e->getMessage();
}
$conn = null;
?>
با استفاده از این روشها، میتوانید به راحتی شناسه آخرین رکورد درج شده در پایگاه داده MySQL خود را دریافت کنید. این اطلاعات میتواند برای پیگیری رکوردها و انجام عملیاتهای بیشتر مفید باشد.
برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید. صفحه ورود و ثبت نام