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>

ありがとう!

編集: さらに、単純な 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 を null にすることはできず、バッククォートを使用して列名をカプセル化する必要があるためです。

また、あなたの sql は sql インジェクションに対して脆弱であり、非推奨の mysql 関数の代わりにpdo (チュートリアルはこちら) の使用を検討することをお勧めします。そうでない場合は、少なくとも交換する必要があります

$email = $_POST['email'];

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