提交表单时整数的输入语法无效

时间:2013-03-26 13:12:24

标签: php sql forms postgresql

我正在尝试将数据从简单表单发送到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']).",现在效果非常好。

3 个答案:

答案 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。