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

कोडइग्निटर एक ही प्रविष्टि को दो बार सम्मिलित कर रहा है। कुछ मामलों में

खैर, मुझे पता चला कि कोडनिर्देशक प्रणाली के अंदर CI_DB_pdo_driver में _execute() फ़ंक्शन ठीक से काम नहीं कर रहा था, शायद यह PHP संस्करण के कारण है। वैसे भी मैंने कोडइग्निटर का कोड यहां से बदल दिया है:

    function _execute($sql)
{
    $sql = $this->_prep_query($sql);
    $result_id = $this->conn_id->prepare($sql);
    $result_id->execute();

    if (is_object($result_id))
    {
        if (is_numeric(stripos($sql, 'SELECT')))
        {
            $this->affect_rows = count($result_id->fetchAll());
            $result_id->execute();
        }
        else
        {
            $this->affect_rows = $result_id->rowCount();
        }
    }
    else
    {
        $this->affect_rows = 0;
    }

    return $result_id;
}

प्रति:

    function _execute($sql)
{
    $sql = $this->_prep_query($sql);
    $result_id = $this->conn_id->prepare($sql);
    $result_id->execute();

    if (is_object($result_id))
    {
        if (preg_match('/^\s*"?(SELECT)\s+/i', $sql))
        {
            $this->affect_rows = count($result_id->fetchAll());
            $result_id->execute();
        }
        else
        {
            $this->affect_rows = $result_id->rowCount();
        }
    }
    else
    {
        $this->affect_rows = 0;
    }

    return $result_id;
}

वह भाग जो परीक्षण करता है कि क्या $sql में उसके अंदर "SELECT" है, वह काम नहीं कर रहा था, इसलिए जब मैंने INSERT करने की कोशिश की तो "$result_id->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. mysql 8 . में GROUP BY का उपयोग करना

  3. क्या मैसकल 5 में पदानुक्रमित डेटा के प्रबंधन की प्रक्रियाएँ हैं?

  4. सिद्धांत 2 mysql FIELD द्वारा क्रम में कार्य करता है

  5. एक MySQL ट्रिगर में रोलबैक करना संभव है?