Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

पीडीओ कॉलम नाम के रूप में कुंजी का उपयोग करके सरणी डालें

मैं इसे इस तरह से करूंगा:

पहले कॉलम घोषित करें। हम इनका उपयोग कॉलम के रूप में उपयोग के लिए $_POST का सबसेट निकालने के लिए करेंगे। अन्यथा कोई उपयोगकर्ता फर्जी अनुरोध पैरामीटर पास कर सकता है जो तालिका के किसी भी कॉलम से मेल नहीं खाता है, जो हमारे SQL को तोड़ देगा।

$columns = array('username','email','password','name');
$column_list = join(',', $columns);

नामित पैरामीटर प्लेसहोल्डर बनाएं यानी :username

$param_list = join(',', array_map(function($col) { return ":$col"; }, $columns));

एसक्यूएल को अलग से तैयार करें, क्योंकि अगर यह अपने स्वयं के चर में है तो इसे पढ़ना और डीबग करना आसान है।

$sql = "INSERT INTO `applications` ($column_list) VALUES ($param_list)";

हमेशा prepare() . से लौटाई गई त्रुटि स्थिति की जांच करें और execute()

$statement = $db->prepare($sql);
if ($statement === false) {
  die(print_r($db->errorInfo(), true));
}

यहां हम केवल लेते हैं $_POST की फ़ील्ड जो उस कॉलम से मेल खाती है जिसे हम सम्मिलित करना चाहते हैं।

$param_values = array_intersect_key($_POST, array_flip($columns));

और उस सरणी को execute() . पर पास करें . फिर से, त्रुटि वापसी स्थिति की जांच करें।

$status = $statement->execute($param_values);
if ($status === false) {
  die(print_r($statement->errorInfo(), true));
}



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. केवल चर को संदर्भ द्वारा पारित किया जाना चाहिए ... लाइन 13 पर विफल

  2. लॉगिन पासवर्ड के लिए PHP नमक और हैश SHA256

  3. लारवेल और InnoDB

  4. मैं लैरवेल माइग्रेशन के साथ टाइमस्टैम्प कॉलम का डिफ़ॉल्ट मान वर्तमान टाइमस्टैम्प पर कैसे सेट कर सकता हूं?

  5. MySQL में संचयी योग प्राप्त करने के लिए इष्टतम क्वेरी