1

我为我的 Facebook Web 应用程序使用 ProgreSQL 和 Heroku 创建了一个 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 中一定有错误,但由于我的经验不足(边走边学)我不知道我做错了什么.

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

4

3 回答 3

1

尝试这个:

请确保nameshtml 输入的值与值匹配$_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实际上并没有被插入到数据库中?

于 2013-03-25T11:50:36.140 回答
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);
?>
于 2013-03-25T13:17:20.160 回答
0

错误 500 是“内部服务器错误” 。这基本上意味着服务器端发生了故障,它只是一个非常通用的错误消息。基本上它可以是一切,它不仅限于您的脚本。这可能是 Apache 模块错误或任何其他拒绝您的 WebServer 软件处理请求而没有任何致命故障的原因。

如果它只发生在相同的操作上(例如提交表单或调用特殊页面),则很可能是脚本错误导致错误 500。

您应该查找您的日志文件,尤其是。apache错误日志。它应该包含有关出现问题的更多信息。

在您的情况下,您的服务器可能不允许连接到外部数据库服务器,但这只是一个猜测。

于 2013-03-25T11:49:01.000 回答