フォームと 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);