无法在php中将数据插入postgres DB

时间:2014-03-11 22:55:20

标签: php postgresql

我无法将文本框中的数据插入postgresdb。 我插入tbl_ingredients工作正常,但我插入到tbl_item有麻烦无法弄清楚如何以及在哪里?

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>名优产品

我得到wamp“警告:pg_query():查询失败:错误:整数的输入语法无效:”草莓“第1行:插入到tbl_item值('草莓','6','3','1300gra。 .. ^在D:\ Wamp \ wamp \ www \ Php \ CTea \ AddItem.php第247行“

有人可以帮助我了!谢谢。

1 个答案:

答案 0 :(得分: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 - 所以它会尝试将第一个值插入该列。


来自手册 - http://www.postgresql.org/docs/9.1/static/sql-insert.html

  

目标列名称可以按任何顺序列出。如果没有清单   列名完全给出,默认是所有列   表格按其声明的顺序;或者前N个列名称,如果有的话   只有VALUES子句或查询提供的N列。价值   由VALUES子句或查询提供的与   显式或隐式列列表从左到右。

     

显式或隐式列列表中不存在的每个列都将   填充默认值,无论是声明的默认值还是   如果没有,则返回null。