我有这个 php 代码,用于根据 ajax 发送的3个变量更新 MySQL 数据库中的一行但返回一个http 500错误:
<?php
$dbname = 'xxxxxxxxxx';
$dbuser = 'xxxxxxxxxxxx';
$dbpass = 'xxxxxxxxxxxxx';
$dbhost = 'xxxxxxxxx';
$link = mysql_connect($dbhost, $dbuser, $dbpass) or die("Unable to Connect to '$dbhost'");
$db_selected = mysql_select_db($dbname, $link);
if (!$db_selected) {
die ('Can\'t use foo : ' . mysql_error());
}
$topparent = $_POST['name'];
$column = $_POST['column'];
$value = $_POST['value'];
$sql = "UPDATE reloaded SET" . $column . " = '" .$value . "'WHERE top_parent = '" . $name ."';
$retval = mysql_query( $sql, $link );
if(! $retval ) {
die('Could not create table: ' . mysql_error());
}
echo "success\n";
mysql_close($link);
?>
我的 jquery js就是这个。变量正确传递(尝试使用警报):
function updatedb(a,b,c){
$.ajax({
url: "updatedb.php",
type: 'POST',
data: ({name:a,column:b,value:c}),
success: function(msg) {
alert('DB updated');
}
});
};
知道它为什么会返回错误吗?我花了一些时间浏览代码,尝试不同的变化,但似乎无法弄明白。
答案 0 :(得分:2)
SQL查询语句中存在PHP语法错误。
您错过了结束"
因此500错误。
更正后的代码:
$sql = "UPDATE reloaded SET " . $column . " = '" .$value . "' WHERE top_parent = '" . $name ."'";
修改强>
除此之外,SET
关键字后面没有空格。
修复此问题将正确更新您的数据库。
答案 1 :(得分:-2)
你有
$sql = "UPDATE reloaded SET" . $column . " = '" .$value . "'WHERE top_parent = '" . $name ."';
并使用花括号 - 突出显示语法问题
$sql = "UPDATE reloaded SET{$column} = '{$value}'WHERE top_parent = '{$name}';