如何在 codeigniter 中使用 api 更新 table

how to update table using api in codeigniter

我一直在使用 codeigniter 中的 api 更新 table 行, 我已经阅读了 code tutsplus

的教程

但没有具体的做法, 所以我自己尝试并卡住了:-(

url 请求:

http://localhost/work/bnilife/v1/signup/user/post?nopol=a1b2c3d4e5&username=agus&password=kucingtikus&captcha=c12ds

这是 json 回复:

{
"error": "error :-( "
}

我的控制器如下所示:

public function user_post()
  {
    date_default_timezone_set('Asia/Jakarta');
    $datestring ="%Y-%m-%d %H:%i:%s";
    $time       =time();
    $datetime   =mdate($datestring, $time);

    $data = array (
            'nopol'   => $this->input->get_post('nopol'),
            'username'   => $this->input->get_post('username'),
            'password'   => sha1($this->input->get_post('password')),
            'created_at' => $datetime,
            'updated_at' => $datetime
    );

    $result = $this->signup_m->signup_insert($data);
    if($result) {
      $this->response($data, 200);
    } else {
      $this->response(array('error' => 'error :-( '),400);
    }
  }

我的模特:

  public function signup_insert($data) {

  // Query to check whether username already exist or not
  $condition = "nopol=" . "'" . $data['nopol'] . "'" ;
  $this->db->where($condition);
  $this->db->update('user', $data); }

是否有任何错误或输入错误, 谢谢你们 我是新手。

您可以查看 codeigniter 文档数据库方法的工作原理http://www.codeigniter.com/userguide3/database

public function signup_insert($data) {
  $this->db->where('nopol',$data['nopol']);
  return $this->db->update('user', $data); 
}

在您的情况下,您需要 return 否则您不能将该方法用作 $result,因为它将等于 NULL..

  • 检查和 CI 表单验证库,因为您不验证输入数据(甚至转义)可能会产生问题。
  • 而且重要的是,您应该编写正确的方法名称:signup_insert 应该 INSERT 而不是 UPDATE

'nopol' => $this->input->get_post('nopol') in this change to 'nopol' => $this->input->get_post('no_polis'),

还有 $this->db->where($condition) $condition 未定义。

就像@svetlio 说的, 如果 nopol 是拼写错误(错误类型)或空值,我会添加一些解决方案。 它会 return 错误, 所以我添加了一些代码来做到这一点。 如下所示:

if ($this->db->affected_rows() === 1) {
    return true;
    } else {
    return false;
    }
  }

所以它不会像:

return $this->db->update('user', $data);