За последние 24 часа нас посетили 17393 программиста и 1222 робота. Сейчас ищут 1499 программистов ...

Дублируются строки при добавлении в БД

Тема в разделе "PHP и базы данных", создана пользователем LesyaJJK, 2 фев 2017.

Метки:
  1. LesyaJJK

    LesyaJJK Новичок

    С нами с:
    20 сен 2016
    Сообщения:
    11
    Симпатии:
    0
    Вызываю функцию добавления строки в базу, отрабатывает все четко, но при следующем запуске обнаруживаю, что строки в базе уже две.
    Функция состоит из строк:
    1) добавляем строку в базу
    2) echo скрипт window.open("http://ya.ru"); -- для проверки количества вызовов функции
    3) выводим таблицу со всеми введенными строками
    Результат:
    на экран выводится таблица с одной строкой, создается одно окно яндекса. В базе уже две одинаковые строки (это видно если в соседнем окне запросить эту же таблицу)
    Больше нигде в тексте строки в БД не добавляются.

    Код (Text):
    1. CREATE TABLE tbl
    2. (
    3. data0 int not null auto_increment,
    4. data1 date not null,
    5. data2 blob not null,
    6. primary key (data0)
    7. ) type = InnoDB "))
    и
    Код (Text):
    1. CREATE TABLE tbl
    2. (
    3. data0 int not null ,
    4. data1 date not null,
    5. data2 blob not null,
    6. primary key (data0)
    7. ) type = InnoDB "))
    Строки добавляла так
    PHP:
    1. mysql_query("insert into tbl (data1, data2) values('val1', 'val2')")
    и так
    PHP:
    1. mysql_query("insert ignore into tbl (data1, data2) values('val1', 'val2')")
    и так
    PHP:
    1. mysql_query("insert ignore into tbl (data1, data2, data0) values('val1', 'val2', 'val3')")
     
  2. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    По отдельным строкам ничего нельзя сказать. Нужен весь код, чтобы увидеть его взаимодействие и т д...
     
  3. LesyaJJK

    LesyaJJK Новичок

    С нами с:
    20 сен 2016
    Сообщения:
    11
    Симпатии:
    0
    Ну там много, команда insert встречается всего в одном месте. И для проверки количества вызовов я открываю окно с яндексом. Если надо, выложу
     
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
  5. LesyaJJK

    LesyaJJK Новичок

    С нами с:
    20 сен 2016
    Сообщения:
    11
    Симпатии:
    0
    Файл 1:
    PHP:
    1.   if (isset($_REQUEST['a']))  $action_ = $_REQUEST['a'];  else $action_ = "0";
    2.   include_once("file2.php");
    3.   switch ($action_)
    4.   {
    5.   case "add1":  {lOKMes("Добавить -1"); lCreate1();  break;}
    6.   case "add2":  {lOKMes("Добавить -2"); lShow();  break;}
    7.   case "edt1":  {lOKMes("Изменить -1"); lEdit();  break;}
    8.   case "edt2":  {lOKMes("Изменить -2"); lShow();  break;}
    9.   case "del":  {lOKMes("Удалить ");  lShow();  break;}
    10.   case "show":  {lOKMes("Показать "); lShow();  break;}
    11.   default :  echo "жду команду"; break;
    12.   }
    Файл 2(file2.php):
    PHP:
    1.   function lCreate1()
    2.   {
    3.   ?>   <form method="get">...  </form>   <?
    4.   }
    5.   function lEdit()
    6.   {
    7.   global $lbdname, $nnum;
    8.   if (!lConnect()) exit();
    9.   lUseBase($lbdname);
    10.   $records=mysql_query("SELECT data1,data2 FROM tbl WHERE data0=".$nnum);
    11.   ?>  <form method="get">...  </form>  <?
    12.   }
    13.  
    14.   function lShow()
    15.   {
    16.   global $lbdname, $action_, $nd1, $nd2, $nnum;  
    17.   if (!lConnect()) exit();
    18.   if (!lUseBase($lbdname)) return false;
    19.    
    20.   //добавление объекта
    21.   if ($action_=="add2")
    22.   {
    23.   $maxid=mysql_query("SELECT MAX(data0) AS data0 FROM tbl");
    24.   $newid=mysql_result($maxid,0,0)+1;
    25.   $sqlstr="insert into tbl (data1, data2, data0) values('".$nd1."', '".$nd2."', '".$newid."')";
    26.    if (!mysql_query($sqlstr)) lErrMes('Запись не дабавлена'); else lOKMes ('Запись дабавлена');
    27.   echo '<script>window.open("http://ya.ru");</script>';
    28.   }
    29.  
    30.   //редактирование объекта
    31.   if ($action_=="edt2")
    32.   {
    33.   $sqlstr="update tbl set data1='".$nd1."', data2='".$nd2."' where data0='".$nnum."'";
    34.   if (!mysql_query($sqlstr)) lErrMes('Запись <b>не</b> изменена'); else lOKMes('Запись изменена');
    35.   }
    36.   //удаление объекта
    37.   if ($action_=="del")
    38.   {
    39.   if (!mysql_query("delete from tbl where data0='".$nnum."'")) lErrMes('Запись <b>не</b> удалена'); else lOKMes('Запись удалена');
    40.   }
    41.  
    42.   //выведем содержимое таблицы
    43.   $records=mysql_query("SELECT data0, data1, data2 from tbl ORDER BY data1 DESC");
    44.   $num_of_records = mysql_num_rows($records);
    45.   echo "<TABLE>";
    46. ...
    47.   echo "</TABLE>";
    48.  
    49.   }