При обновлении страницы, в таблицу добавляются 2 записи. В коде найти не могу, почему 2, а не одна.
Помогите, уже минут 30 тыкаю туда сюда... И query() выполняется 1 раз, но почему записи то 2 :(
Использую для подключения к базе
PDO.
Выкладываю кодики:
index.php$sth = $dataBase->insert('tasks', array('task_title' => 'Третья запись', 'task_desc' => 'Ура, появилась третья запись!'));
echo '<br>';
var_dump($sth);
Файл работы с базой:public function insert($tableName, $row = array()) {
if (!count($row)) return false;
$tableName = $this->getTableName($tableName); // Вернет имя таблицы с учетом префикса
$fields = '(';
$values = 'VALUES (';
$params = array();
foreach ($row as $key => $value) {
$fields .= "`$key`,";
$values .= "?,";
$params []= $value;
}
// Удаление последнего символа ','
$fields = substr($fields, 0, -1).')';
$values = substr($values, 0, -1).')';
$query = "INSERT INTO `$tableName` $fields $values";
echo $query.'<br>';
var_dump($params);
return $this->query($query, $params);
}
private function query($query, $params) {
echo '<br>YO!';
$STH = $this->_DBH->prepare($query);
if (!$STH) return false;
if (isset($params)) $STH->execute($params);
else $STH->execute();
// Если НЕ производилась вставка, вернет true, иначе вернет id вставленной записи
if ($this->_DBH->lastInsertId() === 0) return true;
else return $this->_DBH->lastInsertId();
}
p.s.: кажется ничего не забыл добавить.
UPD: Ответ крылся в настройках .htaccess, а именно в этих строчках:
RewriteCond %{REQUST_FILENAME} !-f
RewriteCond %{REQUST_FILENAME} !-d
RewriteRule .* index.php [L]
Переход на
index.php порождал перенаправление на
index.php.
Что было абсолютно не предсказуемым поведением для меня :)