我无法将文本框中的数据插入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行“
有人可以帮助我了!谢谢。
答案 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。