0

私と友人は、私たちのウェブサイト用のコメント システムを作成しようとしています。値を mysql データベースに挿入し、後で読み取ってコメントとして表示するためのやや単純なコードがありますが、データがテーブルに正しく送信されません。この時点で。私たちはどちらも ajax、php、および mysql にかなり慣れていないので、単なるばかげた間違いかもしれません! :P

html:

<form id="postComment" action="Comments.js"  method="post"> 
<input type="email" name="email" onchange="checkEmail();" id="email" /> </br>
<div id ="emailerror">
<p id="emailerror"> </p>
</div> </br>
<input type="text" name="username" id="username" /> </br>
<input type="text" name="content" id="content" /> </br>
<input type="button" value="submit" onclick="commentUpload();" />



</form>

Javascript ファイル:

function commentUpload() //uploads comment to sQl table
{
var email = document.getElementById("email").value //gets the user's email
var username = document.getElementById("username").value //gets the user's username
var content = document.getElementById("content").value //gets the comment content
// var articleName = document.getElementById("articleName") gets the article name

var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }

xmlhttp.open("GET","commentUpload.php?email=" + email + "&username=" +username +    "&content="+content,true);
xmlhttp.send();

}

そしてphp:

<?php 

$email=mysql_real_escape_string($_GET['email']);
$username=mysql_real_escape_string($_GET['username']);
$content=mysql_real_escape_string($_GET['content']);


$query="INSERT INTO Comments
VALUES (1, email, username, content)";


mysql_query($query);
mysql_close();
?> 

事前に助けてくれてありがとう!

4

4 に答える 4

1

現時点では、必要な値をクエリに挿入することはありません。このコード行:

$query="INSERT INTO Comments VALUES (1, email, username, content)";

ある時点で、次のように、以前に収集した変数を受け取る必要があります。

$query = "INSERT INTO Comments VALUES (1, %s, %s, %s)";
$query = sprintf($query, $email, $username, $content);
于 2012-07-09T14:15:34.500 に答える
0

PHP の $query が間違っています。そこに変数を挿入する必要があります。また、最初の場合

$query = "INSERT INTO Comments VALUES (1, '" . $email ."', 
'" . $username . "', '". $content . "')";

また、SQL に文字列を挿入する場合は、私の例で行ったように、値の前後に ' ' を追加する必要があることも忘れないでください。

于 2012-07-09T14:18:32.083 に答える
-1

go "localhost/commentUpload.php" を実行しようとしましたか? いくつかのエラーを表示する必要があります。その場合は、SQL コードを修正する必要があります。最初の答えが述べたように。id には auto_increment を使用する必要があります。

于 2012-07-09T14:19:10.840 に答える
-1

これは私かもしれませんが、コメントを追加またはアップロードするときに JavaScript を使用しないことをお勧めします。ajax は非常に強力なコードを提供できますが、サーバー側のデータベースに挿入するのではなく、クライアント側のデータベースからクエリを実行するときに使用する方がおそらく優れています。

HTML コードは、以前にプログラムしたように AJAX を介して移行されるのではなく、PHP に直接ジャンプする必要があります。また、JavaScript を使用して $_POST と $_GET を変更する代わりに、HTML でメソッドを変更するだけです。

<form id="postComment" action="comments.php" method="get">

次に、データベースへの接続を必ず含める必要があります。w3Schools には、接続の確立に関する優れたチュートリアルがあります。同時に、$_GET から取得したパラメーターをピリオドを使用してクエリ文字列に連結する必要もあります。

<?php 

    $email =mysql_real_escape_string($_GET['email']);
    $username = mysql_real_escape_string($_GET['username']);
    $content = mysql_real_escape_string($_GET['content']);

    $connect = mysql_connect("server","name","password");
    if (!$con) {die('Unable to connect..!!';}
    mysql_select_db("database", $connect);

    $query = "insert into Comments values (1,'" . $email 
    ."', '" . $username . "', '". $content . "')";

    mysql_query($query);
    mysql_close();

?>

それが役に立ったことを願っています!ウェブサイトの残りの部分で頑張ってください!

于 2012-07-09T15:07:53.513 に答える