Mysql
 sql >> база данни >  >> RDS >> Mysql

CodeIgniter вмъква два пъти един и същ запис. В някои случаи

Е, разбрах, че функцията _execute() в CI_DB_pdo_driver вътре в системата codeigniter не работи правилно, може би това е заради версията на php. Както и да е, промених кода на CodeIgniter от:

    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. Вземете многоъгълни точки mysql

  2. Експортирайте MySQL в CSV, някои колони с кавички и други без

  3. Spring 3 MVC + MySQL:не може да съхранява символ €

  4. MySql класиране за търсене с критерии

  5. ResultSet ->getString() се срива, когато стойността е>=16