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

पीडीओ बिंदपरम मुद्दा

पीडीओ वैल्यू डेटा को बाइंड करते हैं, टेबल और कॉलम के नामों को नहीं।

आप बाइंडिंग के उपयोग को गलत समझ रहे हैं। आप तालिका और स्तंभ नामों को पीडीओ से बाइंड नहीं कर सकते हैं। आप उन स्तंभों में सम्मिलित करने के लिए डेटा बाँधते हैं। स्ट्रिंग ऑपरेशंस का उपयोग करके तालिका नाम और कॉलम शामिल करने के लिए आपको SQL का निर्माण करने की आवश्यकता है।

डेटा को प्रारूपित करें

मैंने आपके $column और $value का नाम बदलकर $column_array, $value_array कर दिया है ताकि यह स्पष्ट किया जा सके कि वे क्या हैं, और मान लिया कि प्रत्येक एक साधारण सरणी है:$column_array = array('column1', 'column2', ...) etc.

$placeholders = array_map(function($col) { return ":$col"; }, $column_array);

$bindvalues = array_combine($placeholders , $value_array);

$placeholders अब इस तरह दिखते हैं:

$placeholders = array(
        ':column1',
        ':column2',
         ...
    );

$bindvalues ​​अब इस तरह दिखता है:

$bindvalues = array(
        ':column1'=>'value1',
        ':column2'=>'value2',
         ...
    );

बनाएं, तैयार करें, निष्पादित करें

$sql = $this->connect->prepare("INSERT INTO $table (" .implode(",", $column_array) .") VALUES (". implode(",", $placeholders) . ")";

यह आपको फॉर्म का तैयार विवरण देगा:

$sql = INSERT INTO table_name (column1, column2, ...) VALUES (:column1, :column2, ...)

फिर आप तैयार कथन को निष्पादित कर सकते हैं और $values ​​​​को तर्क के रूप में पास कर सकते हैं।

$sql->execute($bindValues);

नोट:

  • एक चेतावनी जिसका उल्लेख किया जाना चाहिए। सुनिश्चित करें कि आपका मूल डेटा SQL इंजेक्शन के विरुद्ध स्वच्छ कर दिया गया है। पीडीओ बाध्य मूल्यों के लिए इसका ख्याल रखता है, लेकिन यदि आप कॉलम का निर्माण कर रहे हैं, तो कहें, $_POST डेटा यह असुरक्षित है और इसे स्वच्छ करने की आवश्यकता है।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मैं फैटफ्री फ्रेमवर्क में mysql परिणामसेट के माध्यम से कैसे लूप करूं?

  2. MySQL - फिक्स एरर - वर्डप्रेस डेटाबेस एरर डुप्लीकेट एंट्री कुंजी के लिए प्राथमिक क्वेरी के लिए सम्मिलित करें wp_options में

  3. एक चयन में प्रति श्रेणी नवीनतम 2 आइटम कैसे प्राप्त करें (mysql के साथ)

  4. कैसे जांचें कि MySQL में कोई पंक्ति मौजूद है या नहीं? (यानी जांचें कि कोई ईमेल MySQL में मौजूद है या नहीं)

  5. ON DELETE CASCADE बाधाओं को किस क्रम में संसाधित किया जाता है?