2011-02-01 6 views
8

ve aniden olsun0 MySQL sonuç indeksi 64 için geçersiz Ofset (veya sorgu veri tamponsuz olduğu) Ben php ve mysql ile çalışıyorum

mysql_data_seek() [function.mysql-veri-seek]: Ofset 0 ne demek (veya sorgu veri tamponsuz olduğu)

MySQL sonuç indeksi 64 için geçersiz.

Bunu nereden ayıklamaya başlayacağımı bilmiyorum. sonuç kümesi mysql_data_seek() bir E_WARNING başarısız olur boşsa


Bu sınıf da yapıcısının

class dbResult { 

    private $result; 
    private $num_rows; 

    function __construct($result) { 
     $this->result = $result; 
    } 

    function result($type = 'object') { 
     @mysql_data_seek($this->result, 0); 
     if ($type == 'array') 
      return mysql_fetch_assoc($this->result); 
     if ($type == 'object') { 
      if ($this->num_rows() == 1) { 
       $data = new stdClass(); 
       foreach (mysql_fetch_assoc($this->result) as $k => $v) 
        $data->$k = $v; 
       return $data; 
      } 
      if ($this->num_rows() > 1) { 
       $data = array(); 
       while ($result = mysql_fetch_assoc($this->result)) { 
        $row = new stdClass(); 
        foreach ($result as $k => $v) 
         $row->$k = $v; 
        $data[] = $row; 
       } 
       return $data; 
      } 
      return false; 
     } 
    } 

    function num_rows() { 
     return mysql_num_rows($this->result); 
    } 

    function num_fields() { 
     return mysql_num_fields($this->result); 
    } 

} 
+1

mysql_data_seek() çağırmak güvenli olduğu satır sayısı için sonucunu kontrol edin. –

+0

Üzgünüz, kod ekledim ama metin kutusunun dışındaki geri tuş düğmesine bas, kodu tekrar ekledim. – Hailwood

+2

mysql_data_seek'i çağırmadan önce daima mysql_num_rows (sonuç)> = 1'i işaretleyin. Sonuç kümesi boş olabilir –

cevap

10

içine mysql kaynak geçirilir. Bu durumda sanırım sonuçta mysql_data_seek()'u aramadan önce sonuç kümesinin boş olup olmadığını kontrol etmiyorsunuz. onlar> = 1 ise

daima o zaman nasıl bazı kodlar gösterme hakkında