वह (दुख की बात है) का अर्थ है कि आपको एक ही मान को एक क्वेरी में दो बार उपयोग करने के लिए द्वितीयक नामों के साथ अपनी बाइंडिंग को डुप्लिकेट करना होगा। सुंदर नहीं, कुछ इस तरह;
$sth = $db->prepare(
'INSERT INTO track (`rsname`, `overallranknow`, `overalllevelnow`, `overallxpnow` )' .
'VALUES (:name, :Overalln, :Overall1, :Overall2) '.
'ON DUPLICATE KEY UPDATE ' .
"rsname = :name_2" .
"overallranknow = :Overalln_2" .
"overalllevelnow = :Overall1_2" .
"overallxpnow = :Overall2_2"
);
$sth->bindValue(':name', $name, PDO::PARAM_STR);
$sth->bindValue(':name_2', $name, PDO::PARAM_STR);
$sth->bindValue(':Overalln', $Overalln, PDO::PARAM_INT);
$sth->bindValue(':Overalln_2', $Overalln, PDO::PARAM_INT);
$sth->bindValue(':Overall1', $Overall[1], PDO::PARAM_INT);
$sth->bindValue(':Overall1_2', $Overall[1], PDO::PARAM_INT);
$sth->bindValue(':Overall2', $Overall[2], PDO::PARAM_INT);
$sth->bindValue(':Overall2_2', $Overall[2], PDO::PARAM_INT);
$sth->execute();
संपादित करें:चूंकि MySQL VALUES
ON DUPLICATE KEY
में कीवर्ड मापदंडों को दोहराने की आवश्यकता नहीं है, इस सटीक मामले के लिए @YourCommonSense के उत्तर का उपयोग करना बेहतर होगा।