0

我从 YouTube 教程中获取了以下代码(来源:pbj746)。除了提交的数据没有出现在数据库中之外,一切似乎都在工作!我检查了 $dbhost、$db、$dbuser 和 $dbpassword,它们都匹配,但数据没有被拉入。

如果有人可以提供帮助,那就太好了!

    <?php
    $dbServer = "localhost";
    $db = "quizsoft_newsletter";
    $dbUser = "admin_newsletter";
    $dbPassword = "password";

    $conn = mysql_connect($dbhost,$dbuser,$dbpass);
    mysql_select_db($db);

    $email = $_POST['email'];

    mysql_query("INSERT INTO emails ('ID', 'Email')
        VALUES(NULL, '$email')") or die(mysql_error());
    ?>



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Form</title>

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(e) {
    $("div#msgbox").hide();
    $("#addEmail").click(function() {
        $.post('process.php', {
            email:$("#email").val()
        },
        function(response) {
            $("div#msgbox #msg").html("Email Submitted Successfully!")
            $("div#msgbox").slideDown("normal");
        }
        );
        return false;
    });
    $("div#msgbox").click(function() {
        $(this).slideUp("normal");
    })
});
</script>

<style>
body { font:Verdana, Geneva, sans-serif; font-size:13px; }
div#msgbox { background:#999; border-bottom:1px solid #CCC; color:#FFF; width:100%; height:30px; top:0; left:0; cursor:pointer; }
div#msgbix #msg { line-height:30px; padding-left:10px; }
form#newsletter { margin-top:35px; }
</style>

</head>
<body>

    <div id="msgbox"><span id="msg"> </span></div>
    <form id="newsletter">
        Email:<input type="text" id="email" />
        <input type="submit" id="addEmail" value="Submit" />
    </form>

</body>
</html>

感谢:D!

编辑:此外,我运行了一个简单的 PHP 脚本来确认数据库连接:http: //quizsoft.co.uk/ajaxform/test.php

4

1 回答 1

0

除了下面列出的内容之外,还有一些语法错误。$dbServer应重命名为,$dbhost反之亦然。

另外,从您的评论中,我知道您正在使用 ID 自动递增,所以我建议您更改此设置

INSERT INTO emails ('ID', 'Email') VALUES(NULL, '$email')

对此

INSERT INTO emails (`Email`) VALUES ('$email')

因为 ID 不能为空,并且需要使用反引号来封装列名。

另外,请注意,您的 sql 容易受到 sql 注入的影响,您可能希望研究使用 pdo(这里是一个教程)而不是已弃用的 mysql 函数。如果没有,您至少应该更换

$email = $_POST['email'];

经过

$email = mysql_real_escape_string($_POST['email']);
于 2012-09-22T16:17:18.737 回答