Trying to add content to my database using a form and JSON. My query runs fine through phpmyadmin, but for some reason my PHP file is unable to receive the information from my form.
(Please save me the typical “Don’t use mysql functions”.)
Chrome’s Network Preview shows me this:
data: null
debug: "SQL query was: INSERT INTO linktb (catName, title, desc, URL) VALUES ('1', '', '', '');<br>SQL query failed <br>Other output: "
retval: 2
Debugging of my 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);
Javascript & HTML I was using was fine, turned out I used the word “desc” in MYSQL which represented descending instead of the var that I wanted to use it as.