Tôi gặp sự cố, mã của tôi chạy chính xác, chèn dữ liệu vào cơ sở dữ liệu, nhưng thông báo thành công sau lastInsertId không hoạt động
Hãy giúp tôi
Những gì tôi đã thử
if[isset[$_POST['submit']]] { $class=$_POST['class']; $subject=$_POST['subject']; $lesson=$_POST['lesson']; $topic=$_POST['topic']; $date = date['Y-m-d']; $teacherid = $_SESSION['teacherid']; $teachername = $_SESSION['fullname']; $sql = "INSERT INTO homework [class,subject,lesson,topic,`date`,teacherid,teachername] VALUES[:class,:subject,:lesson,:topic,:date2,:teacherid,:teachername]"; $query=$conn->prepare[$sql]; $query->bindparam[':class',$class,PDO::PARAM_STR]; $query->bindparam[':subject',$subject,PDO::PARAM_STR]; $query->bindparam[':lesson',$lesson,PDO::PARAM_STR]; $query->bindparam[':topic',$topic,PDO::PARAM_STR]; $query->bindparam[':date2',$date,PDO::PARAM_STR]; $query->bindparam[':teacherid',$teacherid,PDO::PARAM_INT]; $query->bindparam[':teachername',$teachername,PDO::PARAM_STR]; $query->execute[]; $lastInsertId = $conn->lastInsertId[]; if[$lastInsertId] { echo ""; echo ""; } }
Một thẻ đã tồn tại với tên chi nhánh được cung cấp. Nhiều lệnh Git chấp nhận cả tên thẻ và tên nhánh, vì vậy việc tạo nhánh này có thể gây ra hành vi không mong muốn. Bạn có chắc chắn muốn tạo nhánh này không?
MySQL có một thuộc tính cột AUTO_INCREMENT
tự động tạo ra một giá trị số nguyên nhất quán khi một INSERT
thành công [hoặc không]. Thông thường, thuộc tính này được đặt trên một cột được coi là PRIMARY KEY
. Do đó, việc cung cấp một giá trị duy nhất cho cột và đảm bảo nhận dạng riêng của từng hàng. Hàm LAST_INSERT_ID[]
trả về giá trị được tạo gần đây nhất cho một cột có thuộc tính AUTO_INCREMENT
. Nhiều lần, bạn sử dụng thêm giá trị này trong quá trình xử lý truy vấn [E. g. , liên kết thông tin của khách hàng mới đăng nhập với bảng đơn đặt hàng đã tham gia, đảm bảo tính toàn vẹn tham chiếu giữa bảng cha và bảng con bằng cách sử dụng FOREIGN KEY
và PRIMARY KEY
, INSERT
vào bảng một đối một có liên quan khác, v.v…]. Thư viện PDO PHP có một phương thức lớp có cùng tên, lastInsertId[]
, cung cấp chức năng tương tự như LAST_INSERT_ID[]
trong ngữ cảnh PHP. Trong bài đăng này, tôi sẽ ghé thăm lastInsertId[]
với một ví dụ đơn giản. Tiếp tục đọc để tìm hiểu thêm…
Nếu bạn thích nội dung được viết ở đây, bằng mọi cách, hãy chia sẻ blog này và [các] bài đăng yêu thích của bạn với những người khác, những người cũng có thể được hưởng lợi hoặc thích nội dung đó. Vì cà phê là thức uống yêu thích của tôi nên bạn thậm chí có thể mua cho tôi một ly nếu muốn.
Các loại tăng tự động dành riêng cho nhà cung cấp
Hầu hết các RDBMS đều hỗ trợ một số dạng thuộc tính cột, loại hoặc từ khóa tăng tự động. Dưới đây là nhiều triển khai phổ biến tại thời điểm viết
- Máy chủ SQL – IDENTITY
- MySQL – AUTO_INCREMENT
- Oracle SQL – IDENTITY
- PostgreSQL – NỐI TIẾP
- MariaDB – AUTO_INCREMENT
PDO là gì?
PDO là viết tắt của PHP Data Objects và là giao diện để làm việc với Cơ sở dữ liệu trong PHP. PDO không liên quan đến cơ sở dữ liệu, không giống như mysqli chỉ hoạt động với Cơ sở dữ liệu MySQL và có thể tương tác với một số cơ sở dữ liệu
Cấu trúc bảngGiả sử chúng ta có bảng 'user_details' này với 3 cột. 'id', 'first_name' và 'last_name'
Hãy thêm một số dữ liệu vào bảng 'user_details' với câu lệnh INSERT
này
1
2
3
CHÈN VÀO `người dùng _ chi tiết`getMessage[getFile[getLine[setAttribute[PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION];
// begin a transaction
$pdo->beginTransaction[];
// Assume the 'user input' values have been sanitized and validated.
$first_name = 'Josh';
$last_name = 'Otwell';
// prepare insert statement
$insert_sql = "INSERT INTO `user_details`[`first_name`, `last_name`]
VALUES[:first_name, :last_name]";
$insert_stmt = $pdo->prepare[$insert_sql];
$insert_stmt->bindValue[':first_name', $first_name];
$insert_stmt->bindValue[':last_name', $last_name];
// try the insert, if something goes wrong, rollback.
if [$insert_stmt->execute[] === FALSE] {
$pdo->rollback[];
echo 'Unable to insert data';
} else {
$last_insert_id = $pdo->lastInsertId[];
echo 'Last Insert ID: '.$last_insert_id;
$pdo->commit[];
}
} catch [PDOException $e] {
echo 'Database Error '.$e->getMessage[].' in '.$e->getFile[].
': '.$e->getLine[];
}
Quan trọng. Nói chung, cách tốt nhất là ghi bất kỳ lỗi nào vào tệp nhật ký và không gửi các lỗi này vào trình duyệt. Tôi đã làm như vậy trong đoạn mã trên chỉ cho mục đích của bài đăng này nếu chúng tôi gặp lỗi trong quá trình thực thi
Sau khi thực thi tập lệnh INSERT
3, giá trị của INSERT
9 của trình duyệt là lastInsertId[]
1
ID Chèn Cuối cùng . 3
Chúng ta cũng có thể thấy hàng dữ liệu được thêm gần đây trong ảnh chụp màn hình bên dưới
Tôi hy vọng phần giới thiệu cấp cao về lastInsertId[]
này hữu ích và mang tính thông tin cho bạn. Nếu bạn có bất kỳ câu hỏi hoặc đề xuất nào về các phương pháp hay nhất, vui lòng cho tôi biết trong phần nhận xét bên dưới và cảm ơn vì đã đọc
đề xuất đọc
Truy cập các nguồn thông tin này để biết thêm thông tin về [các] chủ đề được đề cập trong bài đăng này
- Thuộc tính cột AUTO_INCREMENT trong MySQL – Phối cảnh ban đầu
- Tiện ích mở rộng được cải thiện của MySQL
- PDO
- PDO lastInsertId[]
Giống như những gì bạn đã đọc?
Lời kêu gọi hành động
Cảm ơn bạn đã dành thời gian để đọc bài viết này. Tôi thực sự hy vọng bạn đã khám phá ra điều gì đó thú vị và khai sáng. Vui lòng chia sẻ những phát hiện của bạn ở đây, với người khác mà bạn biết, người cũng sẽ nhận được giá trị tương tự từ nó
Truy cập trang Danh mục đầu tư-Dự án để xem bài đăng trên blog/bài viết kỹ thuật mà tôi đã hoàn thành cho khách hàng.
Tôi đã đề cập đến việc tôi yêu một tách cà phê đến mức nào chưa?. ?
Để nhận thông báo qua email [Không bao giờ là thư rác] từ blog này [“Văn xuôi của cú kỹ thuật số”] cho các bài đăng blog mới nhất khi chúng được xuất bản, vui lòng đăng ký [theo ý muốn của bạn] bằng cách nhấp vào nút 'Nhấp để đăng ký'. ’ trong thanh bên trên trang chủ. [Vui lòng xem lại Trang chính sách bảo mật văn xuôi của Digital Owl bất cứ lúc nào để biết bất kỳ câu hỏi nào bạn có thể có về. cập nhật email, chọn tham gia, từ chối, biểu mẫu liên hệ, v.v.]
Hãy chắc chắn và truy cập trang “Hay nhất” để có bộ sưu tập các bài đăng blog hay nhất của tôi.
Josh Otwell có niềm đam mê học tập và phát triển với tư cách là Nhà phát triển SQL và người viết blog. Các hoạt động yêu thích khác khiến anh ta chúi mũi vào một cuốn sách hay, một bài báo hoặc dòng lệnh Linux. Trong số đó, anh ấy chia sẻ niềm yêu thích với các trò chơi RPG trên máy tính bảng, đọc tiểu thuyết giả tưởng và dành thời gian cho vợ và hai con gái.
từ chối trách nhiệm. Các ví dụ được trình bày trong bài đăng này là những ý tưởng giả định về cách đạt được các loại kết quả tương tự. Chúng không phải là [các] giải pháp tối ưu nhất. Phần lớn, nếu không phải tất cả, các ví dụ được cung cấp, được thực hiện trên môi trường máy trạm học tập/phát triển cá nhân và không nên được coi là chất lượng sản xuất hoặc sẵn sàng. Mục tiêu và nhu cầu cụ thể của bạn có thể thay đổi. Sử dụng những phương pháp có lợi nhất cho nhu cầu và mục tiêu của bạn. Ý kiến là của riêng tôi