0

私はこの機能を持っています

public function select($table, $rows = '*', $join = null, $where = null, $order = null, $limit = null){

        $q = 'SELECT '.$rows.' FROM '.$table;
    if($join != null){
        $q .= ' JOIN '.$join;
    }
    if($where != null){
            $q .= ' WHERE '.$where;
        }
        if($order != null){
                $q .= ' ORDER BY '.$order;
    }
        if($limit != null){
                $q .= ' LIMIT '.$limit;
        }

    if($this->tableExists($table)){

        $query = @mysql_query($q);
        if($query){

            $this->numResults = mysql_num_rows($query);

            for($i = 0; $i < $this->numResults; $i++){
                $r = mysql_fetch_array($query);
                $key = array_keys($r);
                for($x = 0; $x < count($key); $x++){

                    if(!is_int($key[$x])){
                        if(mysql_num_rows($query) > 1){
                            $this->result[$i][$key[$x]] = $r[$key[$x]];
                        }else if(mysql_num_rows($query) < 1){
                            $this->result = null;
                        }else{
                            $this->result[$key[$x]] = $r[$key[$x]];
                        }
                    }
                }
            }
            return true;
        }else{
            array_push($this->result,mysql_error());
            return false; // No rows where returned
        }
    }else{
        return false;
    }
}

この関数を使用し、データベースが空の場合、配列は次のようになります

Array( )

これは大丈夫です!

データベースに 1 つのエントリがある場合、次のようになります。

Array
(
    [id] => 1
    [a] => 0
    [b] => 0
)

エントリが 1 より多い場合は次のようになるため、これは問題ありません。

Array
(
    [0] => Array
        (
            [id] => 1
            [a] => 0
            [b] => 0
        )

    [1] => Array
        (
            [id] => 2
            [a] => 1
            [b] => 1
        )

)

私が望むのは、1 つのエントリを含む出力が次のようになることです。

Array
(
    [0] => Array
        (
            [id] => 1
            [a] => 0
            [b] => 0
        )
)

この出力を取得するには、関数をどのように変更する必要がありますか?

4

2 に答える 2