MySQL запрос создает дублирующую строку - PullRequest
0 голосов
/ 07 января 2010

Я никогда не сталкивался с такой ошибкой. Я использовал подготовленные операторы, когда он смотрел, и перепробовал все, чтобы исправить проблему, включая разбор формы до ее пустых компонентов.

При выполнении следующего кода создается повторяющаяся строка.

    $sql = "INSERT INTO inventory 
    VALUES  ('','$stocknum','$year','$make','$model','$price','$body','$mile','$engine','$trans',
    '$drive','$doors','$fuel','$vin','$des','$featured','$sale','$features','$safety','$airbags','$power',
    '$exterior','$interior','','','','','')";
$insert = mysql_query($sql,$connection) or die(mysql_error());
$name = mysql_insert_id();

Я не могу обернуть голову, зачем он это делает.

Ответы [ 6 ]

2 голосов
/ 29 июля 2011

У меня была такая же проблема в проекте при использовании и библиотеки orm для доступа к базе данных. Также попробовал протестирован с MySQL напрямую

После почти однодневного тестирования в нескольких браузерах и получения разных результатов я обнаружил, что расширения, которые я использовал (Webug) для Chrome, вызывали отзыв на страницу. После отключения расширения заработало

Я протестировал некоторые расширения, которые вызвали эту проблему ... В chrome: Webug.

Надеюсь, это поможет

1 голос
/ 07 января 2010

Сколько столбцов в инвентарной таблице? Является ли второй ряд точной копией первого? Я не знаю интерфейса БД PHP, но могу представить ошибку, при которой, если вы дадите ему больше полей, чем столбцов, он попытается создать несколько строк.

РЕДАКТИРОВАТЬ: небольшое исследование документации MySQL находит:

INSERT операторы, которые используют VALUES Синтаксис может вставлять несколько строк. Сделать это, включить несколько списков столбцов значения, каждое из которых заключено в круглые скобки и разделенные запятыми. Пример:

INSERT INTO tbl_name (a, b, c) VALUES (1,2,3), (4,5,6), (7,8,9);

Список значений для каждой строки должен быть заключены в скобки. Следующее утверждение является незаконным, потому что количество значений в списке не соответствует количеству имен столбцов:

INSERT INTO tbl_name (a, b, c) ЗНАЧЕНИЯ (1,2,3,4,5,6,7,8,9);

В зависимости от содержимого ваших переменных и от того, как драйвер PHP / MySQL обрабатывает эти переменные (прямая текстовая подстановка или ? заполнители), выполняемый оператор может выглядеть не так, как вы ожидаете. Попробуйте отобразить значение $sql перед его выполнением.

1 голос
/ 07 января 2010

Возможно, оператор вставки вызывается дважды. Вы добавили запись в журнал, чтобы убедиться, что этот код выполняется только один раз? И вы искали, чтобы убедиться, что нет другого кода для добавления записей инвентаризации где-либо еще?

0 голосов
/ 27 февраля 2014

В отсутствие какого-либо действительно четкого заключения по этому поводу мое наблюдение состоит в том, что я думаю, что Red Element находится на правильном пути, когда он заявляет: «Я думаю, что это как-то связано с моим веб-хостом, поскольку теперь каждый скрипт, который добавляет данные SQLделать то же самое ».

У меня была проблема, описанная выше, и я не мог понять, что это вызвало, пока я не запустил один и тот же код на другой платформе, и он работал нормально.Первоначально я проводил тестирование в конфигурации WAMP на локальном хосте, но когда я продвинул код на настоящий сервер, это не сработало.

Поэтому я полагаю, что если у кого-то еще есть проблема, стоит попробовать на другом сервере.конфигурации.

0 голосов
/ 07 января 2010

Я предполагаю, что у вас проблема с файлом .htaccess, который делает 2 запроса на один и тот же скрипт. Записывайте сообщение с отметкой времени при вставке.

0 голосов
/ 07 января 2010

Когда вы запрашиваете таблицу позже, вы только выбираете из этой таблицы или, возможно, присоединяете ее к другой таблице? Если у вас есть более одной дочерней записи в объединенной таблице, вы получите несколько результатов.

Ваш код выглядит правильно для меня, если на остальной части страницы я не вижу ничего.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...