2

構造:

CREATE TABLE `links` (
 `id` int(11) NOT NULL auto_increment,
 `title` int(11) default NULL,
 `url` varchar(200) NOT NULL,
 `seourl` varchar(150) default NULL,
 `linkset` varchar(50) NOT NULL default 'main',
 PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8

ここで奇妙な問題が発生しています。クエリDESCRIBE linksは最初の行 ( id) のみを返します。

// my query...
$data = $db->query('DESCRIBE `links`')->fetch();

// query function
public function query($sql, $id = false){
    $this->query_id = mysqli_query($this->connection, $sql);
    if(!$this->query_id){
        psyo::error("Error while executing query (sql: {$sql}).");
        return NULL;
    }else{
        $this->result = mysqli_store_result($this->connection);
        $this->affected = mysqli_affected_rows($this->connection);
        return $id ? $this->query_id : $this;
    }
}

// fetch function
public function fetch($query_id = NULL){
    if($query_id)
        $this->query_id = $query_id;
    if($this->query_id){
        $data = mysqli_fetch_assoc($this->query_id);
    }else{
        psyo::error("Error while fetching results (query id: {$this->query_id}).");
    }
    $this->free();
    return $data;
}

// connection set by
public function connect(){
    $this->connection = mysqli_connect($this->server, $this->username, $this->password, $this->database);
    if(!$this->connection){
        psyo::error("Error connecting to server or while selecting database (database: {$this->database}).");
    }
}

したがって、これらはクラスから取り出した私の関数です(さらに必要かどうかを尋ねます...)、はい、実行されたクエリは最初の行のみを返しますが、この場合$this->affectedは正しい値を返します。5

phpMyAdmin 内でクエリを実行すると、予想される結果が返されます。

何が問題なのですか?

4

1 に答える 1

1

ああ、自分で問題を発見しました。私のfetch()関数は最初の行だけを返したようです。少し変更して動作します:

public function fetch($all = false, $query_id = NULL){
    if($query_id)
        $this->query_id = $query_id;
    if($this->query_id){
        if($all){
            while($row = mysqli_fetch_assoc($this->query_id)){
                $data[] = $row;
            }
        }else{
            $data = mysqli_fetch_assoc($this->query_id);
        }
    }else{
        psyo::error("Error while fetching results (query id: {$this->query_id}).");
    }
    $this->free();
    return $data;
}

それらの不注意な間違いをくそー...

于 2011-04-04T12:22:05.533 に答える