2010-02-09 26 views
8

Im làm việc trên một bảng có 4 cột và cột đầu tiên là số nguyên tăng dần được gọi là id.PHP Mysqli chèn một hàng vào một bảng có cột auto_increment

Nếu im sẽ chèn vào bảng này bằng cách sử dụng các câu lệnh chuẩn bị mysqli, tôi vẫn gặp sự cố khi chèn truy vấn hoạt động. Sử dụng PHPmyAdmin Nó nói với tôi để cho nó NULL. Ive đã cố gắng này:

$query = "INSERT INTO tbl (id, col2, col3, col4) VALUES ('NULL', ?, ?, ?)"; 
$stmt -> bind_param("ssi", $col2, $col3, $col4) 

và điều này

$query = "INSERT INTO tbl (id, col2, col3, col4) VALUES (NULL, ?, ?, ?)"; 
$stmt -> bind_param("ssi", $col2, $col3, $col4) 

và chỉ cung cấp cho bind_param 3 đối số (người cuối cùng 3). Không phải công việc đó. Tôi cũng đã thử điều này:

$null = NULL; 
$query = "INSERT INTO tbl (id, col2, col3, col4) VALUES (?, ?, ?, ?)"; 
$stmt -> bind_param("issi", $null, $col2, $col3, $col4); 

Không có tác phẩm nào trong số này. Có cách nào được chuẩn hóa để chèn vào loại bảng này không?

+0

bạn cũng muốn chèn trường tự động vô hiệu hóa một cách rõ ràng? – Sarfraz

Trả lời

12

Chỉ cần bỏ qua lĩnh vực id, MySQL sẽ lấp đầy nó tự động:

$query = "INSERT INTO tbl (col2, col3, col4) VALUES (?, ?, ?)"; 
$stmt->bind_param("ssi", $col2, $col3, $col4) 
+0

Cảm ơn bạn rất nhiều. Câu trả lời này nên được đánh dấu là câu trả lời chính xác. – Edwinfad

2

này một

$query = "INSERT INTO tbl (id, col2, col3, col4) VALUES (NULL, ?, ?, ?)"; 
$stmt -> bind_param("ssi", $col2, $col3, $col4) 

chắc chắn nên làm việc. Lỗi chính xác bạn nhận được là gì?

Bây giờ tôi trông đẹp hơn, bạn có $ query và $ stmt. Bạn có gì ở giữa? Có lẽ bạn đang thiếu một số phần.

Nó phải là

$stmt = $mysqli->prepare("INSERT INTO tbl (id, col2, col3, col4) VALUES (NULL, ?, ?, ?)"); 
$stmt -> bind_param("ssi", $col2, $col3, $col4); 
$stmt ->execute(); 
3

này nên làm việc, bởi vì id được thêm tự động (tăng lên vì lý do này) bởi mysql:

$query = "INSERT INTO tbl (col2, col3, col4) VALUES (?, ?, ?)"; 

Trong một số trường hợp, bạn phải chèn auto_incremtnt lĩnh vực một cách rõ ràng , nếu đây là trường hợp thì bạn có thể sử dụng câu lệnh INSERT IGNORE, xem hướng dẫn mysql để biết thêm thông tin về nó.

4

Nếu trường idauto_increment, sau đó chỉ cần không xác định nó trong truy vấn insert của bạn:

$query = "INSERT INTO tbl (col2, col3, col4) VALUES (?, ?, ?)"; 

Và, tất nhiên, không nên cố gắng để ràng buộc bất kỳ tham số để nó ;-)


Vì nó được tạo bởi MySQL, không cần phải vượt qua cột đó.

Các vấn đề liên quan