如何从类中的函数返回mysqli结果对象?

时间:2014-02-07 13:31:44

标签: php mysql oop mysqli crud

所以..我正在通过使用CRUD操作编写数据库对象来练习我的PHP。但是,我在从数据库对象返回结果对象时遇到了麻烦。

这是相关的“select_where”函数,它位于db类中,并带有一个指定表名的参数:

       function select_where(array $values, $table, $what = "*")
    {
        $where_stmt = '';

        if(count($values)>0)
        {
            $fields = array_keys($values);
            $vals   = array_values($values);

            if ($what != "*")
            {
                if(is_array($what)===TRUE)
                {
                    $what = implode($what, ',');
                }
                else //assume string! -- needs better error handling!
                {
                //Don;t do  anything for now
                }

            }

            $where_stmt = "WHERE ";

            for( $i=0 ; $i<count($fields) ; $i++)
            {
                $where_stmt .= "$field[$i] = '$vals[$i]' AND ";

            }

            $where_stmt .= "$field[$i] = '$vals[$i]'";


        }//else: array is an empty one, meaning SELECT ALL;


        $query = "SELECT $what FROM `$table` $where_stmt;";
        ;

        if($result = $this->mysqli_conn->query($query))
        {
            echo "RESULT:<br />";
            print_r($result);
            return $result;

        }else{
            return false;
        }

    }

print_r函数打印结果对象的属性没有问题。但是当我调用我的函数时,它没有..因此:

    $db = new db();

    $result = $db->select_all('codes');

    print_r($result);

print_r不会打印任何内容......

我100%确定这与我对PHP OOP的工作方式缺乏了解有关;当我在其他地方寻找答案时,我们非常感谢任何建议或解决方案!


看起来我找到了答案:

ROOKIE MISTAKE!

在我的代码中,我使用了辅助函数      $ result = $ db-&gt; select_all('codes');

实际上看起来像这样:

function select_all($table, $what="*" )
    {
        $empty_array = array();
        $this->select_where($empty_array, $table, $what);

    }

但是可以看出,这个功能没有回复!所以现在:

function select_all($table, $what="*" )
    {
        $empty_array = array();
        return $this->select_where($empty_array, $table, $what);

    }

是解决方案!

再次感谢您

0 个答案:

没有答案