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

PHP पीडीओ MYSQL में एकाधिक पंक्तियों को सम्मिलित करने का सबसे अच्छा तरीका क्या है?

आपके पास कम से कम ये दो विकल्प हैं:

$rows = [(1,2,3), (4,5,6), (7,8,9) ... ];

$sql = "insert into `table_name` (col1, col2, col3) values (?,?,?)";

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

foreach($rows as $row)
{
    $stmt->execute($row);
}

OR:

$rows = [(1,2,3), (4,5,6), (7,8,9) ... ];

$sql = "insert into `table_name` (col1, col2, col3) values ";

$paramArray = array();

$sqlArray = array();

foreach($rows as $row)
{
    $sqlArray[] = '(' . implode(',', array_fill(0, count($row), '?')) . ')';

    foreach($row as $element)
    {
        $paramArray[] = $element;
    }
}

// $sqlArray will look like: ["(?,?,?)", "(?,?,?)", ... ]

// Your $paramArray will basically be a flattened version of $rows.

$sql .= implode(',', $sqlArray);

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

$stmt->execute($paramArray);

जैसा कि आप देख सकते हैं कि पहले संस्करण में बहुत सरल कोड है; हालांकि दूसरा संस्करण बैच डालने को निष्पादित करता है। बैच इंसर्ट तेज होना चाहिए, लेकिन मैं @BillKarwin . से सहमत हूं कि अधिकांश कार्यान्वयनों में प्रदर्शन अंतर पर ध्यान नहीं दिया जाएगा।



  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. सुडो के बिना mysql सर्वर से कनेक्ट करें

  3. सर्वर को पुनरारंभ किए बिना MySQL क्वेरी कैश साफ़ करें

  4. MySQL प्रतिलिपि पंक्तियों को उसी तालिका में कुंजी मान के साथ बदल दिया गया है (मौजूदा ओवरराइटिंग नहीं)

  5. MySQL - समय का योग कैसे करें?