I have a terrible problem with pdo statements. My class generate a SQL Query based on the Object, then forward the query and params to Bd Class and execute, but data is inserted twice to database.
Table in database
CREATE TABLE IF NOT EXISTS `es_simple_object` (
`id_object` int(10) unsigned NOT NULL AUTO_INCREMENT,
`active` tinyint(1) NOT NULL,
PRIMARY KEY (`id_object`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Generated query
INSERT INTO es_simple_object (es_simple_object.id_object, es_simple_object.active) VALUES (NULL, ?)
Generated params array
Array
(
[0] => 1
)
call Db function
static::$db = Db::getInstance();
static::$db->_execute($sql, $params);
Bd Class (just functions used to this job)
public static function getInstance()
{
if (!isset(self::$instance))
self::$instance = new Db();
return self::$instance;
}
private function __construct()
{
$connection = 'mysql:host='.$this->server.'; port='.$this->port.'; dbname='._DB_NAME_.'; charset='._DB_CHARSET_;
try
{
$this->link = new PDO($connection, _DB_USER_, _DB_PASSWD_);
$this->link->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (PDOException $ex)
{
Tools::_catchException($ex);
exit;
}
return $this->link;
}
public function _execute($sql, $params = array())
{
try
{
$pdoStatement = $this->link->prepare($sql);
$pdoStatement->execute($params == null ? array(null) : $params);
$this->rows_affected = $pdoStatement->rowCount();
$this->rows_returned = $pdoStatement->columnCount();
$this->last_id = $this->link->lastInsertId();
$this->result = $pdoStatement;
return $pdoStatement;
}
catch (PDOException $ex)
{
Tools::_catchException($ex, array($sql, $params));
return false;
}
}
I have no more ideas how to solve this problem
Why are you attempting to insert a NULL
to the id_object
column, when NULL
is not allowed per the column constraints?
Instead, shouldn't you perhaps leave id_object
out of the INSERT
statement, and let MySQL add a new autoincremented value there?
Thanks to @James Taylor for the suggestion of .htaccess
file. The problem was hiding in RewriteRule and parameter QSA
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With