我用这个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;
}

10-04 10:50