2013-08-02 103 views
0

如果我能解決這個問題,我會被詛咒的,我已經看了它太久,可能錯過了一些明顯的東西。沒有在課堂上設置變量

變量表和順序沒有設置,也沒有推送數組中的字段。任何人都可以在此找到任何東西嗎

<?php 
    $table = new table; 
    $table->table = "db_firstaid"; 
    $table->order = "aid_date"; 
    $table->field("aid_id","false",NULL); 
    $table->field("aid_patient","true","[F]"); 
    $table->field("aid_aider","true","[F]"); 
    $table->field("aid_date","false","[F]"); 
    $table->field("aid_time","false","[F]"); 
    $table->table(); 
?> 

<?php 
    class table{ 

    /* Connect */ 
    private $salt = '#######' 
    private $user = '#######' 
    private $pass = '#######' 
    private $host = '#######' 
    private $data = '#######' 
    private $db = ''; 
    private $link = NULL; 
    private function connect(){ 
     $this->link = mysql_connect($this->host, $this->user, $this->pass); 
     if(!$this->link){ 
      die("<script type=\"text/javascript\">notyfy({text:'Error, could not connect to server.',type:'error',timeout:7000,});</script>"); 
     } 
     $this->db = mysql_select_db($this->data,$this->link); 
     if(!$this->db){ 
      die("<script type=\"text/javascript\">notyfy({text:'Error, could not connect to database.',type:'error',timeout:7000,});</script>"); 
     } 
    } 
    private function disconnect(){ 
     mysql_close($this->link); 
    } 

    /* Push fields into array */ 
    private $fields = array(); 
    public function field($f,$aes,$t){ 
     return $this->fields[] = array($f,$aes,$t); 
    } 

    /* Compile SQL string */ 
    public $table = ''; 
    public $order = ''; 
    private $sql = ''; 
    private function genSQL(){ 
     foreach($this->fields as $f){ 
      if($f[1] == 'true'){ 
       $this->sql = $this->sql . "AES_DECRYPT(".$f[0].",'[SALT]') AS ".$f[0].", "; 
      }else{ 
       $this->sql = $this->sql . $f[0].", "; 
      } 
     } 
     $this->sql = substr($this->sql,0,-1); 
     $this->sql = "SELECT ".$this->sql." FROM ".$this->table." ORDER BY ".$this->order; 
    } 

    /* Query Database */ 
    private $result = ''; 
    private $number = ''; 
    private function query(){ 
     $this->genSQL(); 
     $this->result = mysql_query($this->sql,$this->link) or die(mysql_error()); 
     $this->number = mysql_num_rows($this->result); 
    } 

    /* Echo Table */ 
    public function table(){ 
     $this->connect(); 
     $this->query(); 
     if($this->number > 0){ 
      while($row = mysql_fetch_array($this->result)){ 
       echo "<tr class=\"selectable\">"; 

       //Ignore this bit, yet to build.  

       echo "</tr>"; 
      } 
     } 
     $this->disconnect(); 
    } 

} 
+0

您是否嘗試過調試? – sgroves

+0

你怎麼知道他們沒有設置? – Laurence

+0

@rid oops。碰上我最後的評論,雖然... – shennan

回答

2

感謝您的建議。

我已經得到它的工作,PHP失敗的類和函數被稱爲'表',所以我已經將該函數重命名爲'genTable',並將類留在'表',現在它的行爲。

-3

試試這個:

$db_table = "db_firstaid"; 
    $order = "aid_date"; 

    $table = new table($db_table, $order); 

然後在你的類,使用這樣的構造:

public $table = ''; 
public $order = ''; 
private $sql = ''; 

public function __constructor($table, $order){ 
    $this->table = $table; 
    $this->order = $order; 
} 

基本上,你不是在你的班級中的任何地方設置表格和順序值,而是嘗試使用這些值。

更新:OP確實設置了值,所以這個答案只是另一種做OP的方法。另外,根據評論,問題可能在其他地方,OP需要進行更多的調試。

+1

當然,他是:'$ table-> table =「db_firstaid」;'。 'table'是一個公共字段,與'order'相同。 – rid

+0

你是對的。我的錯。 – Maximus2012

0

根據我的評論,嘗試追加一些;他們需要。即您在table類的開頭聲明的接口變量。

由於rid已經指出,PHP可能會在解析錯誤時默默地失敗。

如果您不知道,PHP中的所有語句都應附加;字符。

顯然,這可能不是您正在使用的代碼。那些散列值將是一個非常重要的安全缺陷。 ;-)

+0

@rid您的簽名精梳可愛,但我不打算進入這個大語義辯論... – shennan

+0

嗨,the;有沒有在實際的代碼中,我不小心刪除了它們,以排除論壇的價值。 –