Почему вставка в базу дублируется?

$dbh = new PDO('sqlite:'.$filename);
$dbh->exec("INSERT INTO test VALUES ('test1')");
$dbh->exec("INSERT INTO test VALUES ('test2')");


$sth = $dbh->query('SELECT * FROM test');
$sth->setFetchMode(PDO::FETCH_ASSOC);
while($row = $sth->fetch()) print_r($row);

Код вставки должен вставить две строки в таблицу, последующая выборка это как бы подтверждает. Однако после просмотра содержимого таблицы в редакторе базы оказывается, что там 4 строки.

А если после вставки строк вызывать:
$dbh = new PDO('sqlite:'.$filename);
$sth = $dbh->query('SELECT * FROM test');
while($row = $sth->fetch()) print_r($row);

то с каждым вызовом добавляются новые строки. Не могу понять в чем корень проблемы.
  • Вопрос задан
  • 297 просмотров
Решения вопроса 1
delimer
@delimer Автор вопроса
В общем, попробовал это проделать с новой базой - вставка дублируется. Больше всего не понятно почему, если сначала сделать инсерт, а потом делать только селект, то данные всё равно вставляются. Пробовал работать с базой через PDO и напрямую с SQLite3 - результат одинаков. Склоняюсь к тому, что глюк где-то на стороне сервера.

В итоге глюк найден на стороне сервера. Там в htaccess были какие-то странные правила которые вместе с любым файлом всегда запускали index.php.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@dmitryKovalskiy
программист средней руки
Не знаком с sqlite, но поле в которое вы вставляете значение - ключевое?
Ответ написан
Ashlst
@Ashlst
Фанат эстетики и красивых решений.
Приведите структуру таблицы test,пожалуйста.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы