कुछ चीजें जिन्हें ठीक करने की जरूरत है। सबसे पहले आप MySQL का उपयोग कर रहे हैं जब आपको mysqli या PDO का उपयोग करना चाहिए। दूसरा आप बिना किसी पलायन के पोस्ट डेटा का उपयोग कर रहे हैं। तीसरा, आपको इस चयन और अद्यतन की आवश्यकता नहीं है। आप इसे एक ही कथन में कर सकते हैं।
$query = "UPDATE tinyblog SET views = views + 1 WHERE id = (SELECT id FROM tinyblog where id=:article)"
$db = new PDO('mysql:host=localhost;dbname=mydb', 'username', 'password');
$stmt = $db->prepare($query);
$stmt->execute(array(":article"=>$article_id));
हम यहां जो कर रहे हैं वह एक प्लेस होल्डर के साथ एक तैयार स्टेटमेंट बना रहा है। हमने इसे :article
. नाम दिया है लेकिन इसे ?
. के रूप में छोड़ा जा सकता था इसके बजाय।
फिर जब क्वेरी निष्पादित की जाती है तो आपको पैरामीटर में पास करके लापता बिट्स को भरने की आवश्यकता होती है। आखिरी चरण में हम array(":article"=>$article_id)
के साथ यही कर रहे हैं
चूंकि यह एक नामित पैरामीटर है, हम एक सहयोगी सरणी का उपयोग करते हैं। वैकल्पिक रूप से आप बिना किसी पैरामीटर के निष्पादित कह सकते थे यदि आपने bindParam को कॉल किया होता पहले।