使用cake php提供的save()函数无法在DB中保存数据

时间:2015-03-14 10:21:19

标签: mysql cakephp

我对cakephp很新。

我创建了一个公司,一个用户模型和一个寄存器控制器。用户注册一家公司,公司可以拥有大量用户。

我遇到的问题是我可以使用以下方式插入新公司:

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

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

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

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

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

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

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我在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