如果我直接指定值意味着它将值插入数据库。
但如果我使用变量(例如$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数据库
答案 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()