MySQLi OOP类选择功能不起作用

时间:2016-02-13 19:22:52

标签: php oop select mysqli

我刚刚创建了一个我正在创建的数据库类的select函数。这是我到目前为止所创造的:

public function select($columns = array(), $table, $variables = '', $order = '') {
        // Are the required variables empty or equals null?
        if(empty($columns) || empty($table)) {
            return false;
        }

        // Set $order and $variables to false
        if($order == '' || $order == null) {
            $order = false;
        }else if($variables == '' || $variables == null) {
            $variables = false;
        }

        // Check if $columns is an array
        if(!is_array($columns)) {
            return false;
        }

        // Set $fields as an array
        $fields = array();
        // Individualise the array
        foreach($columns as $field) {
            $fields[] = $field;
        }

        // Sepeate all individuals with commas
        $fields = implode(', ', $fields);

        // Finalise the MySQLi query
        if($variables == false && $order == false) {
            $query = "SELECT $fields FROM $table";
        }else if($variables != false && $order == false) {
            $query = "SELECT $fields FROM $table WHERE $variables";
        }else if($variables == false && $order != false) {
            $query = "SELECT $fields FROM $table ORDER BY $order";
        }else if($variables != false && $order != false) {
            $query = "SELECT $fields FROM $table WHERE $variables ORDER BY $order";
        }

        // Prepare the query for executing
        $stmt = $this->connection->prepare($query);

        // Execute the query
        $stmt->execute();

        // Get the results of the query
        $result = $stmt->get_result();

        // Set the results to a variable
        while($row = $result->fetch_assoc()) {
            $results[] = $row;
        }

        // Return the results
        return $results;
    }

我刚刚开始学习OOP PHP和准备语句,所以我可能会遇到一些错误。

但是整个过程都有效,当我使用print_r打印结果时,它会从数据库中打印选定的结果,但出于某种原因,当我使用以下内容时,我只是得到错误:

  

注意:未定义索引:名称

这就是我在索引页面上调用的内容:

$dbc = new dbc();
$query = $dbc->select(array('name', 'setting'), 'options', 'id="1"');

echo $query['name'];

我无法弄清楚为什么会这样做?它返回了函数的结果,我试图回应结果。

谢谢, 基隆

1 个答案:

答案 0 :(得分:2)

从数据库选择中,您要设置数组$results[]的数组。

当你找回它时,你将它作为1个数组访问它,它应该是:

echo $query[0]['name'];

或者你可以创建一个新方法select_row,它只返回1行,你可以在没有数组的情况下访问它。