我已经使用ProgreSQL和Heroku为我的Facebook网络应用程序创建了一个SQL数据库,以下代码是收集数据的表单
</style>
<div class="container">
<form action="insert.php" method="post" onSubmit="window.location.reload()">
Cover URL: <input type="text" name="Cover URL" id="coverURL"><br><br>
Title: <input type="text" name="Title" id="title"><br><br>
Author: <input type="text" name="Author" id="author"><br><br>
Genre:<br> <select name="genre" id="genre">
<option>Adventure & Action</option>
<option>Anthologies</option>
<option>Classics</option>
<option>Sport</option>
<option>War</option>
//More options in actual code, just deleted some to save space.
</select><br><br>
Total Pages: <input type="number" name="TotalPages" id="totalpages"><br><br>
Curent Page: <input type="number" name="CurrentPage" id="currentpage"><br><br>
<input type="submit"> </form><br><br></div>
</center>
</section>
然后调用insert.php
<?php
$dbconn = pg_connect("host=ec2-54-243-190-226.compute-1.amazonaws.com port=5432 dbname=d6fh4g6l0l6gvb user=[REMOVED] password=[REMOVED] sslmode=require options='--client_encoding=UTF8'")
or die('Could not connect: ' . pg_last_error());
pg_query("INSERT INTO books(coverURL, title, author, genre, currentPg, totalPg) VALUES('"$_POST["coverURL"]"','"$_POST["title"]"','"$_POST["author"]"','"$_POST["genre"]"', '"$_POST["currentpages"]"','"$_POST["totalpages"]"')");
pg_close($dbconn);
?>
问题是当我点击提交时我得到错误500,在网上浏览大多数解决方案后说PHP中一定有错误,但是由于我的经验不足(我去学习这个)我不知道我在做什么做错了。
如有必要,我可以提供更多信息。提前谢谢!
答案 0 :(得分:1)
试试这个:
请确保html输入的names
匹配 $_POST
值。
mysqli_query($con,"INSERT INTO books(coverURL, title, author, genre, currentPg, totalPg) VALUES('".$_POST["coverURL"]."','".$_POST["title"]."','".$_POST["author"]."','".$_POST["genre"]."','".$_POST["currentpages"]."','".$_POST["totalpages"]."')");
编辑:使用此声明------ ^
而不是:
'$_POST[author]'
最好像这样做:
'".$_POST["author"]."'
您是否也知道$sql
实际上没有插入数据库?
答案 1 :(得分:0)
error 500 is a "internal server error"。这基本上意味着服务器端的某些东西失败了,它只是一个非常通用的错误消息。基本上它可以是一切,它不仅限于你的脚本。它可能是Apache模块错误或其他任何拒绝WebServer软件处理请求而没有任何致命故障的错误。
如果它仅出现在相同的操作上(例如提交表单或调用特殊页面),则很可能是脚本错误导致错误500.
您应该查找日志文件,尤其是apache错误日志。它应该包含有关出错的更多信息。
在您的情况下,也许您的服务器不允许连接到外部数据库服务器,但这只是猜测。
答案 2 :(得分:0)
问题在于你真的在把事情“混合”在一起。您的代码与pg_connect连接并使用mysqli查询。仅使用Postgree功能连接到数据库阅读http://www.php.net/manual/en/ref.pgsql.php上的手册。
我会做类似的事情:(虽然我没有测试过)
<?php
$dbconn = pg_connect("host=ec2-54-243-190-226.compute-1.amazonaws.com port=5432 dbname=d6fh4g6l0l6gvb user=[REMOVED] password=[REMOVED] sslmode=require options='--client_encoding=UTF8'") or die('Could not connect: ' . pg_last_error());;
$coverUrl = $_POST["coverURL"];
$title = $_POST["title"];
$author = $_POST["author"];
$genre = $_POST["genre"];
$currentPages = $_POST["currentpages"];
$totalPages = $_POST["totalpages"];
pg_query_params($dbconn, "INSERT INTO books(coverURL, title, author, genre, currentPg, totalPg) VALUES($1,$2,$3,$4,$5,$6)", array($coverUrl, $title, $author, $genre, $currentPages, $totalPages));
pg_close($dbconn);
?>