आपने नियंत्रण स्ट्रिंग "एसएसएसडी" द्वारा केवल चार तर्कों को बाध्य किया है, लेकिन आपके पास कई पैरामीटर हैं। mysqli के साथ वेरिएबल को बाइंड करते समय, आपको प्रत्येक पैरामीटर के लिए एक कैरेक्टर की आवश्यकता होती है, उदाहरण के लिए:
mysqli_stmt_bind_param($stmt, "sssdsssssssssdd", $firstname, $surname, $address,
$gender, $city, $province, $postalcode, $phone, $secondphone, $email,
$organization, $inriding, $ethnicity, $senior, $student);
(मैं मान रहा हूं कि वरिष्ठ और छात्र पूर्णांक हैं, और "डी" कोड की आवश्यकता है।)
आपको अपने किसी भी चर को mysqli_real_escape_string() के साथ व्यवहार करने की आवश्यकता नहीं है - यह पैरामीटर का उपयोग करने का बिंदु है। यदि आप एस्केपिंग भी करते हैं, तो आपको डेटाबेस में अपने डेटा में शाब्दिक बैकस्लैश वर्ण मिलेंगे।
और आपको किसी भी मामले में htmlspecialchars() का उपयोग करने की आवश्यकता नहीं है - आप इसका उपयोग HTML पर आउटपुट करते समय करेंगे, डेटाबेस में डालने पर नहीं। आपको &
. जैसे शाब्दिक क्रम मिलेंगे डेटाबेस में आपके डेटा में।
अपनी अगली त्रुटि फिर से करें:
यह निम्नलिखित के कारण होता है:
$result = mysqli_query($mysqli,$stmt);
वह फ़ंक्शन दूसरे तर्क को एक स्ट्रिंग, एक नई SQL क्वेरी होने की अपेक्षा करता है। लेकिन आपने वह प्रश्न पहले ही तैयार कर लिया है, इसलिए आपको निम्नलिखित की आवश्यकता है:
$result = mysqli_stmt_execute($stmt);