使用php ajax请求更新mysql数据库

时间:2017-12-17 03:55:33

标签: javascript php jquery mysql ajax

我有这个 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');
       }               
    });
};

知道它为什么会返回错误吗?我花了一些时间浏览代码,尝试不同的变化,但似乎无法弄明白。

2 个答案:

答案 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}';