Php 单击“注册”按钮时,表单数据未存储在数据库中

Php 单击“注册”按钮时,表单数据未存储在数据库中,php,cakephp,Php,Cakephp,我正在用cakephp开发简单的注册表表单,但问题是表单数据没有存储在数据库中。 这是代码 数据库: CREATE TABLE users ( id INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY , username VARCHAR( 40 ) NOT NULL , password VARCHAR( 40 ) NOT NULL , email VARCHAR( 255 ) NOT NULL , first_name VARCHAR( 40 ) NO

我正在用cakephp开发简单的注册表表单,但问题是表单数据没有存储在数据库中。 这是代码

数据库:

CREATE TABLE users (
id INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
username VARCHAR( 40 ) NOT NULL ,
password VARCHAR( 40 ) NOT NULL ,
email VARCHAR( 255 ) NOT NULL ,
first_name VARCHAR( 40 ) NOT NULL ,
last_name VARCHAR( 40 ) NOT NULL
)
<h3>Registration Form><h3>
<form action="../registers/register" method="POST" name="form">
Username:<input type="text" name="username">
password:<input type="password" name="password">
email:<input type="text" name="email">
FirstName:<input type="text" name="firstname">
LastName:<input type="text" name="lastname">
<input type="submit" value="Register">
</form>
user.php(模型类)


register.ctp(视图类):

CREATE TABLE users (
id INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
username VARCHAR( 40 ) NOT NULL ,
password VARCHAR( 40 ) NOT NULL ,
email VARCHAR( 255 ) NOT NULL ,
first_name VARCHAR( 40 ) NOT NULL ,
last_name VARCHAR( 40 ) NOT NULL
)
<h3>Registration Form><h3>
<form action="../registers/register" method="POST" name="form">
Username:<input type="text" name="username">
password:<input type="password" name="password">
email:<input type="text" name="email">
FirstName:<input type="text" name="firstname">
LastName:<input type="text" name="lastname">
<input type="submit" value="Register">
</form>
登记表>
用户名:
密码:
电邮:
名字:
姓氏:
寄存器控制器:(控制器类)


正如我们在问题中所说,您没有使用cakephp约定

事实上,现在您正试图从
注册表控制器
中删除
用户
。但是您的请求中没有任何用户数据,因为数据来自
注册表
表单

将您的
注册表控制器
转到
用户控制器
(并将register.ctp文件从Registers文件夹移动到Users文件夹)

但是您还犯了其他错误,例如,您没有使用FormHelper创建表单,因此发送给控制器的数据与cake预期的不一样

控制器中还有其他错误

因此,首先请再次阅读手册


PS:也许这应该是一个注释,而不是一个答案,但它太长了,所以不允许我将其作为注释发布。

您的$this->params['form']数组的格式应该是:

Array
(
    [User] => Array
        (
            [username] => test
            [password] => test
            [email] => test
            [first_name] => test
            [last_name] => test
        )

)
所以请检查一下

yopu还可以进行如下调试:

<?php


class RegistersController extends AppController
{
    public $uses = array('User');

    function register(){
        if (!empty($this->params['form']))
        {
            if($this->User->save($this->params['form']))
            {
                $this->flash('Registration Successful','/users/register');
            }
            else
            {
                $this->flash('Not succeeded','/users/register');
            }
            $log=$this->User->getDataSource()->getLog(false, false);
            echo "<pre>";print_r($log);exit;
        }
    }
}
?>

由于您尚未加载用户模型

您应该在
$this->request->data
中获取数据,而不是在
$this->params['form']
中获取数据。如果我使用这个$this->request->data,它将显示如下错误消息:调用成员函数save()在一个非对象文件上:D:\xampp\htdocs\project\UserRegisterForm\app\Controller\registercontroller.php行:23是的,这是因为您没有按照@arillia下面回答的那样遵循cake约定。我正在阅读文档..但无法遵循约定。请给我一些链接以便于理解cakephpDon't post任何内容,尽可能长时间地反复阅读文档。你在这里做的是完全错误的。您创建的控制器基本上是用户控制器中的操作。我猜你还没有准备好接受框架,读的比我说的还要多。我想他根本没有读你之前的答案,否则这个错误就可以避免了……请完整地编写代码。如果我做同样的工作,也不要将数据保存在数据库中
Error: Call to a member function save() on a non-object File: D:\xampp\htdocs\project\UserRegisterForm\app\Controller\RegistersController.php