我和一个朋友正在尝试为我们的网站制作一个评论系统,我们有一个稍微简单的代码,可以将值插入到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();
?>
感谢您提前提供的帮助!
目前,您从未在查询中插入所需的值。这行代码:
$query="INSERT INTO Comments VALUES (1, email, username, content)";
在某个时刻,它需要接收你之前收集的变量,比如:
$query = "INSERT INTO Comments VALUES (1, %s, %s, %s)";
$query = sprintf($query, $email, $username, $content);
php中的$查询是whrong。您需要将变量插入其中。此外,如果第一个
$query = "INSERT INTO Comments VALUES (1, '" . $email ."',
'" . $username . "', '". $content . "')";
另外,不要忘记,如果在SQL中插入一个字符串,则需要在值周围添加",就像我在示例中所做的那样。
所以这可能是我,但我建议您在添加或上传评论时不要使用任何javascript;ajax可以提供一些非常强大的代码,但在从客户端的数据库进行查询时使用它可能比在服务器端插入数据库更好!
HTML代码应该直接跳转到PHP,而不是像以前编程的那样通过AJAX进行转换。您可以简单地更改HTML中的方法,而不是使用一些javascript在$_POST和$_GET之间进行更改。
<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();
?>
我希望这有帮助!祝网站其他部分好运!
您是否尝试运行go"localhost/commentUpload.php"?你需要看到一些错误。如果是这样,您应该修复您的sql代码。正如第一个答复所述。您应该对id使用auto_increment。