आप जो देख रहे हैं वह है table
MySQL आरक्षित शब्दों
में से एक है लेकिन आप इसे कॉलम नाम के रूप में उपयोग करने का प्रयास कर रहे हैं। आपके कॉलम को वास्तव में table_name
. कहा जाता है हालांकि, आपके प्रश्न के आधार पर।
प्लेसहोल्डर्स के साथ एक क्वेरी इस तरह दिखती है:
INSERT INTO votes (ip, table_name, imgid)
VALUES (?, ?, ?)
ON DUPLICATE KEY UPDATE
ip=VALUES(ip),
table_name= VALUES(table_name),
imgid=VALUES(imgid)
mysqli
के साथ याद रखें आप ऐसा करके इस क्वेरी को निष्पादित कर सकते हैं:
$sth = $mysqli->prepare("...");
$sth->bind_param("sss", $_SERVER['REMOTE_ADDR'], $table, $imgid);
$sth->execute();
दस्तावेज़ीकरण इस प्रक्रिया का अधिक विस्तार से वर्णन करता है, लेकिन "sss"
बात तीन स्ट्रिंग्स को संदर्भित करती है, और तीन मान पैरामीटर के रूप में पास किए जाते हैं।
आपको शायद पीडीओ
क्योंकि यह mysqli
. की तुलना में उपयोग करने के लिए बहुत कम उधम मचाता है . डेटाबेस ढांचे का उपयोग करना और भी बेहतर होगा जैसे सिद्धांत
आपके लिए बहुत सारे SQL गंदे काम करने के लिए। CodeIgnighter
जैसे ढांचे का उपयोग करना और भी बेहतर होगा , केकपीएचपी
या FuelPHP
आपको बनाने के लिए एक नींव देने के लिए। जमीन से हाथ से अनुप्रयोगों का निर्माण करना अत्यंत समय लेने वाला और काफी अधिक त्रुटि प्रवण है।
ध्यान देने वाली एक और बात यह है कि आपको अपने कोड में लगातार नामकरण का प्रयास करना चाहिए। आप $table
. का संदर्भ लें table_name
. के मान के रूप में , इसलिए यह संभवतः $table_name
. होना चाहिए शुरू करने के लिए।