在codeigniter中使用php将数据插入数据库时​​发生错误

时间:2013-11-26 05:33:48

标签: php mysql codeigniter

如果我直接指定值意味着它将值插入数据库。

但如果我使用变量(例如$user$pass)来传递members_model类中的值,则会显示如下错误:

  

解析错误:语法错误,意外的'$ user'(T_VARIABLE),期望第5行的C:\ xampp \ htdocs \ application \ models \ members_model.php中的函数(T_FUNCTION)

型号:

members_model.php

    <?php if (!defined('BASEPATH')) exit('No direct script access allowed');

    class Members_model extends CI_Model 
    {
       $user = 'Vinayak';
       $pass = 'ggf';

        function get_members() 
        {
            $query = $this->db->get('users');
            return $query->result_array();
        }
        function put_members()
        {

            $this->username = $_POST['user'];
            $this->password = $_POST['pass'];
            $this->db->insert('users', $this);
        }
    }
    ?>

注意:请帮我解决此错误或告诉我有没有更好的方法使用PHP中的codeIgniter将数据插入MySQL数据库

2 个答案:

答案 0 :(得分:0)

使用类时,如果要定义变量,则需要使用访问说明符。 就像在这种情况下:

 class Members_model extends CI_Model 
    {
       $user = 'Vinayak';
       $pass = 'ggf';

应该是:

 class Members_model extends CI_Model 
    {
      public/private/protected $user = 'Vinayak';
      public/private/protected  $pass = 'ggf';

并且您在同一个calss中使用此变量,您可以使用它们,如$this->user, $this->pass

答案 1 :(得分:0)

除了@Sankalp所说的访问级别,这是导致你显示的错误的原因,你的插入方法有问题(你已经被缺少的访问说明符阻止了,但是当你继续时,你'我也会得到那个错误)

所以,

class Members_model extends CI_Model 
{
  private $user = 'Vinayak';
  private $pass = 'ggf';
  // though, why creating class defaults for user and password?? what's the point?

然后,你的功能:

  function put_members()
  {     
    $this->username = $_POST['user'];
    $this->password = $_POST['pass'];
    $this->db->insert('users', $this);
  }
}

错误:当您必须传递整个对象(insert())的$this方法改为:字段名称:

更好的方法是:

function put_members()
{

   $this->user = $this->input->post('user');
   $this->pass = $this->input->post('pass');
   $this->db->insert('users', array(
                                      'user' => $this->user, 
                                      'pass' => $this->pass
                                    )
                    );
}

'user'和'pass'是'用户'表的列名称(根据您的设置进行更改)。

重要说明:现在我们暂不谈谈您以明文形式存储密码,这是真的不良做法,但请记住,只要您拥有自己的模型功能你应该专注于这个问题:使用你的PHP安装提供的最佳解决方案(crypt()与BLOWFISH相当不错)或至少sha1()