0

フォームと JSON を使用してデータベースにコンテンツを追加しようとしています。クエリは phpmyadmin で正常に実行されますが、何らかの理由で PHP ファイルがフォームから情報を受け取ることができません。

(典型的な「mysql関数を使用しないでください」を保存してください。)

Chrome のネットワーク プレビューでは、次のように表示されます。

      data: null
      debug: "SQL query was: INSERT INTO linktb (catName, title, desc, URL) VALUES ('1', '', '', '');<br>SQL query failed <br>Other output: "
      retval: 2

update.php のデバッグ:

      {"retval":2,"data":null,"debug":"SQL query was: INSERT INTO linktb (catName, title, desc, URL) VALUES ('', '', '', '');
      SQL query failed 
      Other output: "}

HTML & JS:

      <form method="post" id="addURL" name="addURL" method="post">
            <select id="catList" name="catList">
            <option value="1">Milk</option>
            <option value="2">Coffee</option>
            <option value="3">Tea</option>
            </select><br />
            <input id="title" name="title" type="text" placeholder="Title"><br />
            <input id="desc" name="desc" type="text" placeholder="Description"><br />                
            <input id="URL" name="URL" type="text" placeholder="URL"><br />
            <input id="key" name="key" type="text" placeholder="Key"><br />
            <input type="submit" value="Submit">
      </form>


<script type="text/javascript">
$(document).ready(function(){   
    $("#addURL").submit(function(e) {
        e.preventDefault();
        var action = $("#addURL").attr('action');
        var form_data = {
            catList: $("#catList").val(),
            title: $("#title").val(),
            desc: $("#desc").val(),
            URL: $("#URL").val(),
            key: $("#key").val(),
        };
    $.getJSON("update.php",form_data,function(data){
        switch(data.retval){
            case 0: $("#status").html("Unable to update!");
                    $("#status").css("background-color","red");
            break;
            case 1: $("#status").html("Update successful!");
                    $("#status").css("background-color","green");
            break;
            default: $("#status").html("Database error, please try again.");
                    $("#status").css("background-color","red");
            break;
        }
    });
});         
});

PHP:

$json = array("retval" => 2, "data" => NULL, "debug" => "");

$catList = mysql_real_escape_string($_REQUEST['catList']);
$title = mysql_real_escape_string($_REQUEST['title']);
$desc = mysql_real_escape_string($_REQUEST['desc']);
$URL = mysql_real_escape_string($_REQUEST['URL']);
$key = mysql_real_escape_string($_REQUEST['key']);


$sql = "INSERT INTO linktb (catName, title, desc, URL) VALUES ('".$catList."', '".$title."', '".$desc."', '".$URL."');";

$json['debug'] .= "SQL query was: ".$sql."<br>";
$result=mysql_query($sql);
if (!$result) {
    $json['debug'] .= "SQL query failed <br>";
    $json['debug'] .= "Other output: ". ob_get_contents();
    ob_end_clean();
    die(json_encode($json));
}
$count=mysql_num_rows($result);

if($count==1){
    $json['retval'] = 0;
    $json['data'] = mysql_fetch_assoc($result);
} else {
    $json['retval'] = 1;
}
$json['debug'] .= "Other output: ". ob_get_contents();
ob_end_clean();
echo json_encode($json);
4

2 に答える 2

1

さて、ここで刺します。フォームを送信しているようには見えません。ajax経由でこれを行いたいと思います。

 $("#addURL").submit(function(e) {
    e.preventDefault();
    //now what? try serializing your form and sending it via json
    $formData = $(this).serialize()
    $.ajax(url, {
        data : JSON.stringify($formData),
        dataType: 'json',
        contentType : 'application/json',
        type : 'POST'}
    );
 };
于 2012-11-03T05:08:25.357 に答える
0

私が使用していたJavascriptとHTMLは問題ありませんでしたが、MYSQLで使用したい変数の代わりに降順を表す「desc」という単語を使用したことがわかりました。

于 2012-11-04T20:36:55.917 に答える