कोशिश करें:
$sql = "INSERT INTO persist (user_id, hash, expire)
VALUES (:user_id, :hash, :expire)
ON DUPLICATE KEY UPDATE hash=:hash2";
और
$stm->execute(
array(":user_id" => $user_id,
":hash" => $hash,
":expire" => $future,
":hash2" => $hash)
);
दस्तावेज़ के अंश (http://php.net/manual/en/pdo. तैयार करें.php ):
<ब्लॉकक्वॉट>जब आप PDOStatement::execute() को कॉल करते हैं, तो आपको प्रत्येक मान के लिए एक अद्वितीय पैरामीटर मार्कर शामिल करना होगा, जिसे आप स्टेटमेंट में पास करना चाहते हैं। आप तैयार किए गए कथन में एक ही नाम के नामित पैरामीटर मार्कर का दो बार उपयोग नहीं कर सकते हैं। उदाहरण के लिए, SQL स्टेटमेंट के IN() क्लॉज में आप एक से अधिक मानों को एक नामित पैरामीटर से नहीं बांध सकते।