0

如果我能解决这个问题,我会被诅咒的,我已经看了太久了,可能遗漏了一些明显的东西。

变量 table 和 order 没有设置,也没有推送数组中的字段。任何人都可以在这里发现任何东西吗?

<?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();
    }

}
4

3 回答 3

2

谢谢你的建议。

我现在已经开始工作了,php 在类和函数被称为“表”时失败,所以我将该函数重命名为“genTable”,并将类保留为“表”,它现在正在运行。

于 2013-08-03T10:48:39.487 回答
0

根据我的评论,尝试;在需要的地方添加一些内容。即您在table类开始时声明的接口变量。

正如rid所指出的,PHP 可能会在解析错误时静默失败。

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

显然,这实际上可能不是您正在使用的代码。这些哈希值将是一个相当大的安全漏洞。;-)

于 2013-08-02T15:52:36.580 回答
-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 似乎需要进行更多调试。

于 2013-08-02T15:42:02.013 回答