php mysqli गलत एरर सिंटैक्स डालें



(1)

SQL क्वेरी में एक वैरिएबल जोड़ने का सबसे गलती-प्रूफ तरीका एक तैयार स्टेटमेंट के माध्यम से इसे जोड़ना है।

इसलिए, आपके द्वारा चलाए जाने वाले प्रत्येक क्वेरी के लिए, यदि कम से कम एक चर का उपयोग किया जा रहा है, तो आपको इसे एक प्लेसहोल्डर के साथ स्थानापन्न करना होगा, फिर अपनी क्वेरी तैयार करनी होगी, और फिर इसे निष्पादित करना होगा, चर अलग से पारित करना।

सबसे पहले, आपको अपनी क्वेरी को बदलना होगा, चर के स्थान पर प्लेसहोल्डर्स जोड़ना। आपकी क्वेरी बन जाएगी:

$sql = "INSERT INTO users (fname, lname) VALUES (?, ?)";

फिर, आपको इसे तैयार करना होगा, चर को बाँधना होगा और निष्पादित करना होगा:

$stmt = mysqli_prepare($conn, $sql);
mysqli_stmt_bind_param($stmt, "ss", $fname, $lname);
mysqli_stmt_execute($stmt);

जैसा कि आप देख सकते हैं, यह सिर्फ तीन सरल आदेश हैं:

  • तैयार () जहां आप प्लेसहोल्डर्स के साथ एक क्वेरी भेजते हैं
  • bind_param जहाँ आप स्ट्रिंग के साथ टाइप करते हैं ("s" स्ट्रिंग के लिए है और आप इसे वास्तव में किसी भी प्रकार के लिए उपयोग कर सकते हैं) और वास्तविक चर की तुलना में।
  • और निष्पादित करें ()

इस तरह, आप हमेशा सुनिश्चित कर सकते हैं कि क्वेरी में आपके द्वारा जोड़े गए डेटा के कारण एक भी SQL सिंटैक्स त्रुटि नहीं हो सकती है! एक बोनस के रूप में, यह कोड SQL इंजेक्शन के खिलाफ बुलेट-प्रूफ भी है!

यह समझना बहुत महत्वपूर्ण है कि केवल एक चर के आसपास उद्धरण जोड़ना पर्याप्त नहीं है और अंततः सिंटैक्स त्रुटियों से SQL इंजेक्शन में असंख्य समस्याएं पैदा हो जाएंगी। दूसरी ओर, तैयार किए गए कथनों की प्रकृति के कारण, यह एक बुलेट-प्रूफ समाधान है जो किसी भी समस्या को डेटा चर के माध्यम से पेश करना असंभव बनाता है।

मुझे पता है कि बहुत से लोगों को कभी-कभी एक ही त्रुटि होती है, हालांकि मैंने पिछले सभी उत्तरों और मेरे कोड पर ध्यान दिया है और मैंने बैकटिक्स के साथ और उसके बिना कर्नल की कोशिश की है यहां मेरा वर्तमान कोड है मैंने $var साथ-साथ सिर्फ $var लेकिन वही

if(!empty($_POST['email'])){
 $date = date('dmY'); #Todays Date
 $ip = str_replace('.','',$_SERVER['REMOTE_ADDR']); #Visitor IP
 $verify = md5($date.$ip); #MD5 ENCRYPT THE 2 VALUES
 $fname = $_POST['fname'];
 $lname = $_POST['lname'];  
 $email = $_POST['email'];
 $password = md5($_POST['password']);
 $link = mysqli_connect($dbh,$dbu, $dbp, $dbn);

 $query = mysqli_query($link, "INSERT INTO `users` (`email`,`fname`,`lname`,`verify`,`password`,`joined`)
VALUES($email,$fname,$lname,$verify,$password,$date)");

 if($query){ 
  echo "inserted"; 
 }
 else { 
  echo mysqli_error($link);
 }

तालिका में अन्य कॉलम भी हैं लेकिन इसके केवल उपरोक्त कॉलम मैं बाकी के लिए डेटा जोड़ना चाहता हूं शुरू में डिफ़ॉल्ट मानों का उपयोग कर सकता है

मैं इस कोड को इतने लंबे समय से देख रहा हूं, मैं अभी अपनी समस्या का सामना नहीं कर रहा हूं, मुझे इसका कुछ मूर्खतापूर्ण पता है





mysqli