在cakephp应用程序中有数据库问题

 收藏

嗨,大家好,我在cakephp中制作了一个新应用程序(我是该框架的新手。昨晚学习了如何使用它)..我应该制作一个注册系统和登录系统,但是我被卡在注册了。 我使用了模型和控制器,甚至是注册模板,但系统无法保存提交的数据: 这是代码。 =>模块:(user.php)

<?php
class User extends AppModel{
    var $name = "User";
}

=> UsersController.php

<?php
class UsersController extends AppController{
    var $name = "Users";
    function index(){
        $this->set("users", $this->User->find("all"));
    }

    function signup(){
       if(!empty($this->data)){
           if($this->User->save($this->data)){

               $this->Session->setFlash("Signup Complete!!");
               $this->redirect(array("controller"=>"pages", "action"=>"index"));
           }
           else
           {
                $this->Session->setFlash("An error has occured. Please Try again");
               $this->redirect(array("controller"=>"users", "action"=>"signup"));

           }
       }



       }
    function login(){

           }
}

这是我的signup.ctp

<?php include "../includes/header.php"; ?>
<section id="registration">
<h2>Register</h2>
<small>Register Now and enjoy with all the ATLANCER.NET's features!</small>
<?php
echo $this->form->create("Users", array("action"=>"signup"));
echo $this->form->input("email");
echo $this->form->input("password");
echo $this->form->input("nationality");
echo $this->form->input("phone");
echo $this->form->end("Sign up!");
?>
</section>

这是我的数据库表:

CREATE TABLE IF NOT EXISTS `users` (
  `id` int(255) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `address` varchar(255) NOT NULL,
  `credit` int(255) NOT NULL DEFAULT '5',
  `name_url` varchar(255) NOT NULL,
  `signup_date` datetime NOT NULL,
  `nationality` varchar(255) NOT NULL DEFAULT 'Rwandan',
  `birth_year` int(4) NOT NULL,
  `birth_month` int(2) NOT NULL,
  `birth_day` int(2) NOT NULL,
  `dream` text NOT NULL,
  `number_of_bids` int(255) NOT NULL,
  `number_of_work_done` int(255) NOT NULL,
  `rank` int(2) NOT NULL DEFAULT '1',
  `atrank` int(2) NOT NULL,
  `categories` int(11) NOT NULL,
  `awards` int(255) NOT NULL,
  `awards_given` text NOT NULL,
  `logins` int(255) NOT NULL,
  `phone` int(255) NOT NULL,
  `sms_enables` int(1) NOT NULL DEFAULT '0',
  `new_letter` int(1) NOT NULL DEFAULT '1',
  `upline` int(255) NOT NULL,
  `downlines` int(255) NOT NULL,
  `bank_account_number` varchar(255) NOT NULL,
  `backup_email` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

那么我上面的代码有什么问题呢?它应该可以正常工作,但是完全不起作用!我提交数据,只是不将它们存储到数据库中! 还有一种方法可以手动将这些数据存储到数据库中吗?

回复
  • 逗小逼 回复

    保存之前,需要创建所有数据的数组。尝试这样做:

    $ arr ['name'] = trim($ this-> data('name')); $ arr ['email'] = $ this-> data('email'); $ arr ['address'] = $ this-> data('address');

    ...................................................... 等等

    接着 $ this-> User-> save($ arr);

    希望这会起作用。顺便说一句,您是否在app / config中设置了database.php?请检查一下。