INSERT...ON DUPLICATE KEY UPDATE का उपयोग करने का सबसे आसान तरीका निम्नलिखित तरीके से VALUES क्लॉज का उपयोग करना है, इसलिए आपको UPDATE क्लॉज में मापदंडों को दोहराने की आवश्यकता नहीं है। वे आपके द्वारा VALUES क्लॉज में पारित प्रत्येक कॉलम के लिए समान मानों का उपयोग करते हैं:
if($stmt = $mysqli -> prepare("
INSERT INTO user_info (city, state, website, public_contact,
user, zipcode, pic, emailme)
VALUES (?, ?, ?, ?, ?, ?, ?, ?)
ON DUPLICATE KEY UPDATE
city = VALUES(city),
state = VALUES(state),
website = VALUES(website),
public_contact = VALUES(public_contact),
user = VALUES(user),
zipcode = VALUES(zipcode),
pic = VALUES(pic),
emailme = VALUES(emailme)") {
$stmt -> bind_param("sssssssi",$city, $state, $website, $public_contact,
$user, $zipcode, $pic, $emailme);
$stmt -> execute();
$stmt -> close();
}
IODKU सिंटैक्स के लिए आवश्यक है कि आप प्रत्येक कॉलम को अलग-अलग सेट करें। आप उन सभी को एक खंड में सूचीबद्ध नहीं कर सकते जैसे आप करने का प्रयास कर रहे थे।
आपको हमेशा किसी भी कॉल से तैयार () या निष्पादित () में किसी भी त्रुटि की रिपोर्ट करनी चाहिए। या आप mysqli को अपवाद बना सकते हैं:
$mysqli -> report_mode = MYSQLI_REPORT_STRICT;
साथ ही, आपको bind_result() करने की आवश्यकता नहीं है, क्योंकि INSERT से कोई परिणाम सेट नहीं किया गया है:
// NO: $stmt -> bind_result($result);