Laravel:AJAX没有更新数据库表

时间:2017-03-29 10:05:38

标签: javascript php ajax laravel

我想在这里实现的是,无论何时用户点击单选按钮,它都会相应地更改任务的状态

<input type="radio" name="status"
<?php if($task->status == 'todo'){echo('checked');}?>
onchange = "change('todo')">Todo

<input type="radio" name="status"
<?php if($task->status == 'doing'){echo('checked');}?>
onchange = "change('doing')">Doing

<input type="radio" name="status"
<?php if($task->status == 'done'){echo('checked');}?>
onchange = "change('done')">Done

<script>
  function change(status){
  $.ajax({
      url: "/changeStatus.php/",
      type: "POST",
      data: { 'status': status, 'task_id': '<?php echo($task->id); ?>' },                   
  });
  }
</script>

并在我的&#34; changeStatus.php&#34;文件

<?php
    dd($_GET['status']);
    $con=mysqli_connect("127.0.0.1","root","","project_management");
    // Check connection
    if (mysqli_connect_errno()){
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }

    $status = $_POST['status'];
    $task_id = $_POST['task_id'];
    dd($status,$task_id);
    $sql = "UPDATE 'tasks' SET 'status' = '$status' WHERE 'id' = 'task_id'";

    if (!mysqli_query($con,$sql))
    {
        die('Error: ' . mysqli_error($con));
    }

    mysqli_close($con);

?>

问题是当我点击单选按钮时数据库没有更新,并且没有错误! 任何帮助表示赞赏!

注意:为什么&#34; laravel&#34;在标签中;是因为我将其更改为使用POST方法(应该是正确的方法)时的错误是在我的app.js文件中返回错误(来自laravel)。

结论: 感谢Loren bellow(apporoved)的回答,我也对代码做了一些修改,如下所示 -in my changeStatus.php我删除了dd和var_dump函数;因为它创造了错误。 - 将提交方法从GET更改为POST - 并将查询修复为:

$sql = "UPDATE tasks SET status = '$status' WHERE id = '$task_id'";

1 个答案:

答案 0 :(得分:0)

在我看来,你的问题就在这里:

$sql = "UPDATE 'tasks' SET 'status' = '$status' WHERE 'id' = 'task_id'";

应该是

$sql = "UPDATE 'tasks' SET 'status' = '$status' WHERE 'id' = '$task_id'";

注意:这不是Laravel编辑数据库条目的方法,并且是一种非常不安全的方式来运行数据库查询。请,请验证status和task_id,以免发生数据库注入攻击。 (但它似乎是一个Laravel观点。)