php - 如何正确地将数据保存到数据库?

标签 php mysql cakephp cakephp-2.0

我通常像这样将新数据保存到数据库中:

$this->MyTable->set(array(
 'id' => $id,
 'code' => $temp_code,
 'status' => $status,
 'age' => $age,
 'location' => $location,
 'money' => $money
));

$this->MyTable->save();

如果 ID 已经存在于数据库中,我会像这样更新它的相应字段:

$this->Adtweet->id = $id;
$this->Adtweet->saveField('code', $temp_code);
$this->Adtweet->saveField('status', $status);

是否有更好或“正确”的方法来做到这一点?

当我尝试输入一个已经存在的 ID 并使用 set 函数时,我收到以下 SQL 完整性错误:

(Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '150245925' for key 'PRIMARY')

我如何编写一个函数来干净地处理重复条目而不返回错误?

最佳答案

如果你想保存新数据,只需使用Model::save():

$data = array(
    'ModelName' => array(
        'foo' => $foo
    )
)

// prepare the model for adding a new entry
$this->ModelName->create();

// save the data
$this->ModelName->save($data);

如果您想更新数据,只需使用相同的方法而不调用 Model::create()

$data = array(
    'ModelName' => array(
        'id' => $id
        'foo' => $foo
    )
)

$this->ModelName->save($data);

另请参阅:http://book.cakephp.org/2.0/en/models/saving-your-data.html#model-save-array-data-null-boolean-validate-true-array-fieldlist-array

编辑:

我想这就是您要找的:

$this->ModelName->id = $id;
if (!$this->ModelName->exists()) {
    $this->ModelName->create();
}

$this->ModelName->save($data);

关于php - 如何正确地将数据保存到数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11127210/

相关文章:

PHP Curl 登录 https

PHP Session Var 不跨页面传输

php - mysql : Products which satisfies category conditions

MYSQL 间隔 - future 一年中一周中的同一天

php - 如何清除 Controller CakePHP 2.x 中的缓存?

php - 多语言翻译模块的数据库模型

javascript - jQuery如何读取json缓存?

mysql - 从mysql数据库获取最大计数

cakephp - 如何在 CakePHP Controller 中使用多个模型

php - 面包屑未添加到缓存 View 中