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

कोडइग्निटर सक्रिय रिकॉर्ड के लिए बैच बदलें

अगर आप my रिपॉजिटरी को क्लोन करना चाहते हैं मैंने अमल किया है। मैंने कोशिश की समाधान को मुख्य शाखा में लाने के लिए लेकिन ऐसा लगता है कि नारफबग इसके खिलाफ है। हो सकता है कि समुदाय की कुछ और भागीदारी से इसे लागू किया जा सके।

/**
 * Replace_Batch
 *
 * Compiles batch insert strings replacing any existing rows and runs the queries
 *
 * @param   string  $table  Table to replace insert into
 * @param   array   $set    An associative array of insert values
 * @param   bool    $escape Whether to escape values and identifiers
 * @return  int Number of rows inserted or FALSE on failure
 */
public function replace_batch($table, $set = NULL, $escape = NULL, $batch_size = 100)
{
    if ($set === NULL)
    {
        if (empty($this->qb_set))
        {
            return ($this->db_debug) ? $this->display_error('db_must_use_set') : FALSE;
        }
    }
    else
    {
        if (empty($set))
        {
            return ($this->db_debug) ? $this->display_error('replace_batch() called with no data') : FALSE;
        }

        $this->set_insert_batch($set, '', $escape);
    }

    if (strlen($table) === 0)
    {
        if ( ! isset($this->qb_from[0]))
        {
            return ($this->db_debug) ? $this->display_error('db_must_set_table') : FALSE;
        }

        $table = $this->qb_from[0];
    }

    // Batch this baby
    $affected_rows = 0;
    for ($i = 0, $total = count($this->qb_set); $i < $total; $i += $batch_size)
    {
        if ($this->query($this->_replace_batch($this->protect_identifiers($table, TRUE, $escape, FALSE), $this->qb_keys, array_slice($this->qb_set, $i, $batch_size))))
        {
            $affected_rows += $this->affected_rows();
        }
    }

    $this->_reset_write();
    return $affected_rows;
}

// --------------------------------------------------------------------

/**
 * Replace batch statement
 *
 * Generates a platform-specific insert string from the supplied data.
 *
 * @param   string  $table  Table name
 * @param   array   $keys   INSERT keys
 * @param   array   $values INSERT values
 * @return  string
 */
protected function _replace_batch($table, $keys, $values)
{
    return 'REPLACE INTO '.$table.' ('.implode(', ', $keys).') VALUES '.implode(', ', $values);
}

ऊपर ठीक वैसा ही कोड है जैसा कि जीथब पर है, इसलिए समाधान stackoverflow.com पर वापस अनुक्रमित है। लेकिन दुर्भाग्य से स्टैक ओवरफ्लो पर मेरा जवाब 30k वर्णों तक सीमित है, इसलिए मैं पूरी प्रतिबद्धता में पेस्ट नहीं कर सकता जिसमें डीबी ड्राइवरों में परिवर्तन भी शामिल है।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. pymssql.OperationalError:DB-Lib त्रुटि संदेश 20009, गंभीरता 9

  2. मैं कैसे बता सकता हूं कि एक MySQL तालिका को अंतिम बार कब अपडेट किया गया था?

  3. वर्तमान पृष्ठ पर उत्पादों की पेजिनेशन गिनती रेंज

  4. पोस्ट की तारीख और शीर्षक के अनुसार अपने ब्लॉग पोस्ट का परमालिंक कैसे सेट करें?

  5. हम MySQL से SQL-इंजेक्शन को कैसे रोक सकते हैं?