我是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);
答案 0 :(得分:15)
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片段 - 这意味着你需要引用字符串。