【问题标题】:Cant save data in DB using save() function provided by cake php无法使用 cake php 提供的 save() 函数将数据保存在数据库中
【发布时间】:2015-05-16 20:29:58
【问题描述】:

我对 cakephp 很陌生。

我创建了一个公司、一个用户模型和一个注册控制器。一个用户注册一个公司,该公司可以有很多用户。

我遇到的问题是我可以通过以下方式插入一家新公司:

$this->query("INSERT INTO companies (name) VALUES('".$name."');");

此查询用于公司模型中,该模型将公司名称插入公司表中并自动生成 id 主键,但此方法对 sql 注入开放,违反了蛋糕 php 约定。

我尝试了另一种方法,将公司名称分配给公司模型的名称参数并执行 save() 函数。

$this->name = $name; 
$this->save();

但是这样公司名称不会被插入到数据库中。运行调试后,我得到的只是 BEGIN 和 ROLLBACK 函数。

我也从模型中转储了表和架构,验证是否存在连接问题,但没有。

提前感谢您的帮助。

【问题讨论】:

  • 你应该使用正确的 cakephp 命名约定,例如公司信息总是从公司模型中保存
  • 既然您是 Cakephp 新手,请帮自己一个巨大的忙,阅读并使用 Cakephp 的代码生成能力:bake functionality(对于 v2.x,v.3 也有此功能)。 一旦 Cakephp 构建了初始模型、视图和控制器,您就可以开始了解与您的数据相关的代码是如何工作的模型。

标签: mysql cakephp


【解决方案1】:

我在 CakePHP 方面也没有经验,但这是我会做的。

按照 CakePHP 的约定,您需要执行以下操作:

  • 创建模型公司和用户(CakePHProot/app/model/Company.php;User.php)。
  • 创建控制器 (CakePHProot/app/controller/CompaniesController.php;UsersController.php)。
  • 创建下表公司和用户。
  • 关联模型。
  • http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html
  • 在CompanyController中创建createCompany函数。删除registerController。

    public function createCompany() {
            if ($this -> request -> is('post')) {
                $this -> Company -> create();
                if ($this -> Company -> save($this -> request -> data)) {
                    $this -> Session -> setFlash(('Your company has been created.'));
                    return $this -> redirect(array('action' => 'index'));
                }
                $this -> Session -> setFlash(('Unable to create your company.'));
            }
        }
    //You can add the company_founder_id in the view if such a field exists.
    
    这可能是相关的:CakePHP saving HABTM data

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-15
    • 1970-01-01
    • 1970-01-01
    • 2020-12-01
    • 1970-01-01
    相关资源
    最近更新 更多