将PHP表单提交到数据库时出错500

时间:2013-03-25 11:39:24

标签: php sql forms postgresql heroku

我已经使用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中一定有错误,但是由于我的经验不足(我去学习这个)我不知道我在做什么做错了。

如有必要,我可以提供更多信息。提前谢谢!

3 个答案:

答案 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);
?>