我用这个https://github.com/ajillion/PHP-MySQLi-Database-Class
这是我的课
require_once ('class/MysqliDb.php');
class Foo {
private $db;
public function __construct()
{
$this->db = MySqliDb::getInstance();
}
}
public function register($password, $email) {
$password = @sha1($password);
$query = $this->db
->where('email', $email)
->get('users');
if (count($query) == 0)
{
$insertData = array(
'email' => $email,
'password' => $password
);
if($this->db->insert('users', $insertData)){
return true;
}
}else{
return FALSE;
}
}
我保存在Db中(如果
count($query) == 0
),但我也收到此错误( ! ) Notice: Undefined property: MysqliDb::$_paramTypeList in /.../class/MysqliDb.php on line 356
如果我不写这个查询
$query = $this->db
->where('email', $email)
->get('users');
我没有错。
我可以在单一功能中执行多重查询吗?以及我如何出现此错误
MysqliDb::$_paramTypeList
最佳答案
问题出在MysqliDb.php中的reset()函数中
protected function reset()
{
$this->_where = array();
$this->_bindParams = array(''); // Create the empty 0 index
unset($this->_query); //<-- unsetting variables which could be resused
unset($this->_whereTypeList);
unset($this->_paramTypeList);
}
在每个执行方法之后都将运行reset(),它会取消设置_paramTypeList属性,而不仅仅是重新对其进行初始化。因此,如果您使用相同的数据库对象运行第二个查询,则不再定义_paramTypeList属性。
您可以通过编辑reset()函数来将这些变量重新初始化为null来解决此问题:
protected function reset()
{
$this->_where = array();
$this->_bindParams = array(''); // Create the empty 0 index
$this->_query = null;
$this->_whereTypeList = null;
$this->_paramTypeList = null;
}