Tôi đã nhìn thấy những điều sau đây (bằng cách sử dụng tùy chọn VALUES):Tôi có thể sử dụng ON CẬP NHẬT KEY DUPLICATE với truy vấn INSERT bằng tùy chọn SET không?
$query = "INSERT INTO $table (column-1, column-2, column-3) VALUES ('value-1', 'value-2', 'value-3') ON DUPLICATE KEY UPDATE SET column1 = value1, column2 = value2, column3 = value3, ID=LAST_INSERT_ID(ID)";
... nhưng tôi không thể hình dung làm thế nào để thêm ON DUPLICATE CẬP NHẬT KEY với những gì tôi đang sử dụng:
$query = "INSERT INTO $table SET
column-1 ='value-1',
column-2 ='value-2',
column-3 ='value-3'
";
ví dụ :, pseudo-code
$query = "INSERT INTO $table SET
column-1 ='value-1',
column-2 ='value-2',
column-3 ='value-3'
ON DUPLICATE KEY UPDATE SET
column1 = value1,
column2 = value2,
column3 = value3,
$id=LAST_INSERT_ID(id)";
$my_id = mysql_insert_id();
";
tôi sẽ tìm thấy sau này dễ đọc hơn. Sẽ đánh giá cao làm rõ, không tìm thấy một ví dụ trong hướng dẫn sử dụng.
cổ vũ
Cảm ơn Kevin. Cột ID của tôi là Khóa chính và có Chỉ mục duy nhất. Tôi tin rằng tôi hiểu làm thế nào ON DUPLICATE KEY hoạt động, nhưng vấn đề của tôi là thêm nó vào một cú pháp INSERT khác, một sử dụng SET như trái ngược với VALUES. Tôi muốn xem một ví dụ về cú pháp đó nếu nó có thể thực hiện được. – shecky
và chỉ cần làm rõ: Tôi muốn sử dụng ON TUYÊN BỐ CHO TUYẾN ĐỔI KHẨN CẤP để ngăn lừa đảo làm mới, mặc dù tôi đang sử dụng tiêu đề để chuyển hướng người dùng đến trang kết quả nhưng tôi không thể ngăn người dùng quay lại và gửi lại .. Vì vậy, tôi nghĩ tôi sẽ CẬP NHẬT tất cả các trường nếu ID tồn tại – shecky
Tôi đã sửa đổi ví dụ để sử dụng định dạng bạn đang hỏi, ít nhất tôi nghĩ rằng tôi đã làm! –