1

Facebook Web アプリ用に Heroku で ProgreSQL を使用して 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 は「内部サーバー エラー」です。これは基本的に、サーバー側で何かが失敗したことを意味します。これは非常に一般的なエラー メッセージです。基本的に、それはすべてであり、スクリプトに限定されるわけではありません。致命的なエラーが発生することなく、WebServer ソフトウェアが要求を処理することを拒否する Apache モジュール エラーまたはその他の原因である可能性があります。

同じアクション (フォームの送信や特別なページの呼び出しなど) でのみ発生する場合は、エラー 500 の原因となっているスクリプト エラーである可能性が非常に高くなります。

特にログファイルを調べる必要があります。Apache エラー ログ。何がうまくいかなかったのかについての詳細情報が含まれている必要があります。

あなたの場合、おそらくあなたのサーバーは外部データベースサーバーへの接続を許可されていませんが、それは単なる推測です.

于 2013-03-25T11:49:01.000 に答える