2014-03-11 4 views
0

Имейте проблемы с вводом моих данных из текстового поля в postgresdb. Моя вставка в tbl_ingredients работает нормально, но моя вставка в tbl_item имеет проблемы, не может понять, как и где?Невозможно вставить данные в postgresDB в php

Connect();  

      $sql="INSERT INTO tbl_item VALUES('$itemname', '$highthreshold', '$lowthreshold', '$Qpunit', '$description', '$date');"; 
      $iteminfo = pg_query($sql); 

      $sql1="SELECT MAX(itemid) as newid FROM tbl_item;"; 
      $iden_new = pg_query($sql1); 
       $fetched_row = pg_fetch_row($iden_new,NULL,PGSQL_BOTH); 
       $newid=$fetched_row['newid']; 

      $sql2="INSERT INTO tbl_ingredient VALUES('$newid', '$Brandname');"; 
      $ingredients = pg_query($sql2); 

      CloseDB(); 

      if(!$sql) 
      { 
      $sucmsg = "Successfully added new Item, ".ucfirst($itemname)."!";  
      echo $sucmsg;   
      } 
      else 
      { 
      echo "error in saving data"; 
      } 

структура таблицы: tbl_item

Itemid> ItemName> highquantitythreshold> lowquantitythreshold> qntyperunit> ItemType> Описание> dateadded

tbl_ingredient

Itemid> фирменный

im get wamp "Предупреждение: pg_query(): запрос не выполнен: ERROR: недопустимый синтаксис ввода для целого: " Strawberry " LINE 1: INSERT INTO tbl_item VALUES ('Клубника', '6', '3', '1300gra ...^in D: \ Wamp \ wamp \ www \ Php \ CTea \ AddItem.php в строке 247 "

Может кто-то мне может помочь!

+0

Какова ваша структура таблицы для 'tbl_item'? Есть ли столбец «id» или другой целочисленный столбец для первого столбца? Так как '' Strawberry '' не является целым числом, он терпит неудачу. Может понадобиться «VALUES (NULL,« $ itemname », ...». Для второй проблемы измените 'if (! Sql)' на 'if (! $ Sql)'. – Sean

+0

мой плохой забудьте поставить структуру таблицы также на if (! $ sql) .. о Null мне нужно поставить ** Null **, даже если его серийный тип данных на postgress? – blackmaler

+0

см. мой ответ об использовании 'NULL' или указании имени столбца. – Sean

ответ

0

Вам необходимо либо использовать NULL ->

$sql="INSERT INTO tbl_item VALUES(NULL, '$itemname', '$highthreshold', '$lowthreshold', '$Qpunit', '$description', '$date');"; 

ИЛИ

Вы должны указать столбцы, которые вы вставляете в ->

$sql="INSERT INTO tbl_item (itemname, highquantitythreshold, lowquantitythreshold, qntyperunit, description, dateadded) VALUES('$itemname', '$highthreshold', '$lowthreshold', '$Qpunit', '$description', '$date');"; 

Без NULL или столбца имя, база данных не знает, что вы пропускаете первый столбец - itemid - так что я t попытается вставить первое значение в этот столбец.


из руководства - http://www.postgresql.org/docs/9.1/static/sql-insert.html

The target column names can be listed in any order. If no list of column names is given at all, the default is all the columns of the table in their declared order; or the first N column names, if there are only N columns supplied by the VALUES clause or query. The values supplied by the VALUES clause or query are associated with the explicit or implicit column list left-to-right.

Each column not present in the explicit or implicit column list will be filled with a default value, either its declared default value or null if there is none.

+0

can i спросите у еще 1, как я могу сохранить переключатель радиосвязи? im используя ' ' , но каждый раз, когда я нажимаю кнопку отправки, он всегда возвращается в режим по умолчанию (снят). – blackmaler

+0

Это должно работать так, как вы. Единственное, что я могу придумать, это чтобы убедиться, что имя поля верное, поскольку я вижу, что ваше имя столбца в вашем запросе - «Itemtpe». Вы также можете проверить исходный код html в браузере, чтобы убедиться, что нет синтаксических ошибок. – Sean

+0

мой html код для радио. ' > ' от того, что я думаю, ничего не кажется, но все еще не работает. – blackmaler

Смежные вопросы