2013-11-26 2 views
-5

Если я задаю значения напрямую, это означает, что они вставляют значения в БД.ошибка при вводе данных в базу данных с использованием php в codeigniter

Но если использовать переменные (например, $user, $pass) для передачи значений в members_model классе, он показывает ошибку, как показано ниже:

Parse error: syntax error, unexpected '$user' (T_VARIABLE), expecting function (T_FUNCTION) in C:\xampp\htdocs\application\models\members_model.php on line 5

Модель:

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); 
     } 
    } 
    ?> 

ПРИМЕЧАНИЕ. Пожалуйста, помогите мне разрешить эту ошибку или скажите мне, есть ли какой-либо бит r для вставки данных в базу данных MySQL с помощью codeIgniter в PHP

ответ

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

+0

Большое вам спасибо – user3034972

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 
            ) 
        ); 
} 

Где «пользователь» и «передача» являются именами столбцов таблицы 'пользователей (изменить соответственно вашу установку).

Важное примечание: Давайте не будем сейчас говорить о вас хранить пароль в открытом виде, который действительно плохая практика, но имейте в виду, что, как только у вас есть модель функционирования Вы должны сосредоточиться на этом вопросе тоже: используйте самое лучшее решение, которое предоставляет ваша установка php (crypt() с BLOWFISH будет довольно неплохо) или, по крайней мере, sha1()

Смежные вопросы