我正在尝试将数据从简单表单发送到PostgreSQL数据库,但我的服务器日志显示错误Query failed: ERROR: invalid input syntax for integer
有问题的代码部分是:
形式:
<form action="insert.php" method="post">
[removed]
Total Pages: <input type="number" name="totalPages" id="totalpages"><br><br>
<input type="submit"> </form>
在insert.php中的行显示错误消息:
pg_query("INSERT INTO books(coverurl, title, author, genre, totalpg)
VALUES('".$_POST['coverURL']."','".$_POST['title']."','".$_POST['author']."','".$_POST['genre']."','".$_POST['totalpages']."')");
在线查看我发现解决方案提到错误使用'
和"
符号,但这只会导致其他语法错误。
编辑:没有提到我的数据库中的totalpg
是一个小的
解:
感谢JoDev,将'".$_POST['totalpages']."'
更改为".intval($_POST['totalPages'])."
,现在效果非常好。
答案 0 :(得分:1)
可能会强制转换POST值,并删除引号:
pg_query("INSERT INTO books(coverurl, title, author, genre, totalpg)
VALUES('".$_POST['coverURL']."','".$_POST['title']."','".$_POST['author']."','".$_POST['genre']."',".intval($_POST['totalPages']).")");
<强> [编辑] 强>
你在HTML表单和PHP之间犯了一个错误。对于您有价值的正确理由是:$_POST['totalPages']
P 是 name
属性的主要内容。
您的表格是:
Total Pages: <input type="number" name="totalPages" id="totalpages">
名称很好 totalPages ...
答案 1 :(得分:0)
您似乎正在尝试在数字字段中添加文字。
你试过这个:
pg_query("INSERT INTO books(coverurl, title, author, genre, totalpg)
VALUES('".$_POST['coverURL']."','".$_POST['title']."','".$_POST['author']."','".$_POST['genre']."',".$_POST['totalpages'].")");
答案 2 :(得分:0)
如果您的字段是整数,请在将值附加到查询之前考虑使用int cast (int)
。但是,在将它们附加到查询之前请注意所有其他变量must be escaped,因为其中一个变量可能包含使查询无效的字符串。
例如,如果$_POST['title']
包含值Why Hackers Don't Want You To Escape Strings
,则查询将变为:
INSERT INTO books(coverurl, title, author, genre, totalpg)
VALUES('http://example.com/','Why Hackers Don't Want You To Escape Strings','J. Doe','Educational','400');
...这是无效的SQL。