用ajax覆盖同一行

时间:2019-01-26 13:47:43

标签: php mysql ajax

我有以下ajax和php文件,可将数据输入到当前的mytable表中。以下代码可以很好地协同工作。

Ajax文件:

<script type="text/javascript">

  function insertData() {
    var stata=$("#stata").val();
    var statb=$("#statb").val();
    var statc=$("#statc").val();


        $.ajax({
            type: "POST",
            url: "update.php",
            data: {stata:stata,statb:statb,statc:statc},
            dataType: "JSON",
            success: function(data) {
             $("#message").html(data);
            $("p").addClass("alert alert-success");
            },
            error: function(err) {
            alert(err);
            }
        });

}

</script>

update.php

<?php
include('db.php');
$stata=$_POST['stata'];
$statb=$_POST['statb'];
$statc=$_POST['statc'];

$stmt = $DBcon->prepare("REPLACE INTO mytable (stata,statb,statc) VALUES(:stata, :statb,:statc)");

$stmt->bindparam(':stata', $stata);
$stmt->bindparam(':statb', $statb);
$stmt->bindparam(':statc', $statc);
if($stmt->execute())
{
  $res="Data Inserted Successfully:";
  echo json_encode($res);
}
else {
  $error="Not Inserted,Some Problem occur.";
  echo json_encode($error);
}

?>

我想做的是每次我输入数据时都覆盖表中的同一行(更新或替换)(如id = 1)。

但是,当我将"Where id=1"添加到sql查询时,在屏幕上出现[object Object]错误。我无法以任何方式使其工作。我该如何克服这个问题?谢谢。

2 个答案:

答案 0 :(得分:2)

如果要更新行(而不是替换行),请使用UPDATE而不是REPLACE

UPDATE mytable SET stata = :stata, statb = :statb, statc = :statc WHERE id = 1

答案 1 :(得分:1)

我认为问题出在数据类型上。 JSON请求通常返回JSON对象,而不是字符串。 Console.log(data)然后找出错误的字符串值,然后使用它作为正确的键。 另外,如果您的服务器代码发生错误,它将返回一个JSON对象而不是一个字符串,因此您必须遍历该对象,直到获得要输出的字符串为止。 $("#message")