6

我是 Cakephp 的新手,所以我觉得很难实现数据库查询.. 我想要更新一个手机号码,其中电子邮件等于用户提供的号码.. 这是我想要实现的查询

        "Update Users set  mobileNo = $mobileNo  where email = $email"

我正在这样做

      $mobileNo = $data['mobileNo'];
        $email = $data['$email'];


        $count = $this->User->find('count', array(
            'conditions' => array('User.email' => $email)));

        if($count>0){

            $email = $this->User->field(
                'email',
                array('User.mobileNo' => $mobileNo));
            echo $email;

            $this->User->saveField("mobileNo",$mobileNo);
4

1 回答 1

17

CakePHP 中的更新通常都是基于知道要编辑的记录的主键。

普通/简单

更新单个字段的示例是:

$this->User->id = $this->User->field('id', array('email' => $email));
if ($this->User->id) {
    $this->User->saveField('mobileNo', $mobileNo);
}

这将导致以下查询(省略一些计数):

SELECT id from users where email = "$email"
UPDATE users set mobileNo = "$mobileNo" where id = <id>

原子

但是,您可以使用updateAll执行与问题中出现的完全相同的查询:

$this->User->updateAll(
    array('mobileNo' => "'$MobileNo'"),
    array('email' => $email)
);

这将导致以下查询:

UPDATE users set mobileNo = "$mobileNo" where email = "$email"

如果您使用 updateAll 请注意更新应该是 sql 片段 - 这意味着您需要引用字符串。

于 2013-06-26T09:47:47.350 回答