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

PDO का उपयोग करके तालिका में बड़ी मात्रा में चर सम्मिलित करें

गतिशील तैयार क्वेरी

आप $_POST सरणी से गतिशील रूप से अपनी क्वेरी बना सकते हैं:

लेकिन, कभी भी उपयोगकर्ता इनपुट पर भरोसा न करें, जिसका अर्थ है कि आप उस डेटा पर भरोसा नहीं कर सकते हैं जिसमें $_POST में मान्य कॉलम नाम होंगे।

<मजबूत>1. पोस्ट डेटा को स्वच्छ करें

आप श्वेतसूची वाले कॉलम नामों की एक सरणी परिभाषित कर सकते हैं $whitelist = array('field1', 'field2', ...) , और फिर उपयोग करें:

$data = array_intersect_key($_POST, array_flip($whitelist));

श्वेतसूची वाले कॉलम और आपके $_POST सरणी के बीच प्रतिच्छेदन खोजने के लिए। (धन्यवाद @BillKarwin)

<मजबूत>2. क्वेरी बनाएं

private function buildInsertSql($data, $table) {
    $columns = "";  
    $holders = "";  
    foreach ($data as $column => $value) {  
       $columns .= ($columns == "") ? "" : ", ";  
       $columns .= $column;  
       $holders .= ($holders == "") ? "" : ", ";  
       $holders .= ":$column";  
    }  
    $sql = "INSERT INTO $table ($columns) VALUES ($holders)";  
    return $sql; 
}

यह आपको प्रपत्र का SQL विवरण देगा:

$sql = INSERT INTO directory (field1, field2) VALUES (:field1, :field2)

और कथन तैयार करें:

$stmt = $dbh->prepare($sql);

<मजबूत>3. बाइंड पैरामीटर

फिर आप प्लेसहोल्डर्स के लिए पैरामीटर को गतिशील रूप से बाँध सकते हैं:

foreach ($data as $placeholder => $value) {
    $stmt->bindValue(":$placeholder", $value);
 }

और इसे निष्पादित करें:

$stmt->execute();

थोड़ा और उन्नत...

  • इस लिंक पर एक नज़र डालें एक ही प्लेसहोल्डर से आबद्ध हो रहा है अपने गतिशील तैयार किए गए कथन को और अधिक मजबूत बनाने के तरीके के बारे में जानकारी के लिए।
  • इस लिंक पर एक नज़र डालें:इनसाइड-लूप">बाइंड पैराम्स इनसाइड लूप एक लूप में मान बनाम बाध्यकारी पैरामीटर के संबंध में एक चेतावनी के लिए।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. सबस्ट्रिंग वाली पंक्तियों की खोज कैसे करें?

  2. डेटाबेस में डालने से पहले पहले अक्षर (अभिव्यक्ति) के आधार पर पहले तीन वर्णों को कैसे ट्रिम करें

  3. PHP के लिए MySQL पासवर्ड () फ़ंक्शन

  4. मिलीसेकंड सटीकता के साथ टाइमस्टैम्प:उन्हें MySQL में कैसे सहेजना है

  5. वीपीएन विकल्प के रूप में एसएसएच टनलिंग का उपयोग करना