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 代码。正如第一个答案所述。您应该使用 auto_increment 作为 id。

于 2012-07-09T14:19:10.840 回答
-1

所以这可能是我,但我建议您在添加或上传评论时不要使用任何 javascript;ajax 可以提供一些非常强大的代码,但是在客户端从数据库查询时使用它可能比在服务器端插入数据库更好!

您的 HTML 代码应该直接跳转到 PHP,而不是像之前编程的那样通过 AJAX 进行转换。而不是使用一些 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 回答