echo $fields_num;
这个$fields_num在哪里定义的?
若是在类中定义的需要 echo $list_fields->fields_num;
但你却是注释掉的
$list_fields->out_tables();
既然$fields_num未定义,那么下面的循环是不会被执行的
for ($i = 0; $i < $fields_num; $i++)

解决方案 »

  1.   

    刚试完取消$fields_num的注释,还是不行。
    我想问一下PHP不是可以用的时候才定义变量吗?
    function sun_fields($fields){
    $fields_num=mysql_num_fields($fields);
    }
    这一句不是已经定义了上面的变量吗?
      

  2.   

    没有。应该是obj->属性。所以
    function sun_fields($fields){
    $this->fields_num=mysql_num_fields($fields);
    }
      

  3.   

    $list_fields=new field2table($domain,$user,$db,$table);感觉你没有写构造函数——实例化的时候用向构造函数传递参数还有就是 $list_fields->conn_server($domain,$user,$pwd);
    定义$pwd 但是没有默认值,而且也没有传世实参过去还有就是上面几位说那个
    $fields_num;
      

  4.   

    根据上边几位的提示,我把原来的代码改成现在这样,不过出错:
    <?php
    /* $link = mysql_connect('localhost', "root");
    $fields=mysql_list_fields('jbdb','employee',$link);
    $num=mysql_num_fields($fields);
    for ($i = 0; $i < $num; $i++) {
         echo mysql_field_name($fields, $i) . "\n";
    }*/
    class field2table{
    var $domain;
    var $user;
    var $pwd="";
    var $link;
    var $db;
    var $table;
    var $fields;
    var $fields_num;
    // @$fields=($db,$table,$link);
    function conn_server($domain,$user,$pwd){
    $this->$link=mysql_connect($domain,$user,$pwd);
    }
    function conn_table($db,$table,$link){
    $this->$fields=mysql_list_fields($db,$table,$link);
    }
    function sun_fields($fields){
    $this->$fields_num=mysql_num_fields($fields);
    }

    function out_tables(){
    for ($i = 0; $i < $this->$fields_num; $i++) {
    echo "<center>
      <form action=\"\" method=\"post\" enctype=\"multipart/form-data\" style=font-family:\"宋体\";font-size:22px name=\"$table\">
       <table width=\"820\" border=\"0\" nowrap>
       <tr align=\"left\">
         <td width=\"395\" height=\"30\" valign=\"middle\"><strong>编号:</strong>
         <input name=\"mysql_field_name($fields, $i)\" type=\"text\" style=font-family:\"宋体\";font-size:20px maxlength=\"4\"></td>
         <td width=\"395\" height=\"30\"><strong>名称:</strong>
         <input name=\"textfield\" type=\"text\" style=font-family:\"宋体\";font-size:20px maxlength=\"8\" height=\"20\"></td>
       </tr>
      </table>
      </form>
      </center>";
    }
    }
    // mysql_close();
    }
    $domain='localhost';
    $user='root';
    $db='jbdb';
    $table='employee';
    $list_fields=new field2table();
    $list_fields->conn_server($domain,$user,$pwd);
    $list_fields->conn_table($db,$table,$link);
    $list_fields->sun_fields($fields);
    // $fields_num;
    $list_fields->out_tables();
    ?>Warning: mysql_list_fields(): supplied argument is not a valid MySQL-Link resource in E:\work_space\web\vicp\jiabao\emloyee_class.php on line 28Warning: mysql_num_fields(): supplied argument is not a valid MySQL result resource in E:\work_space\web\vicp\jiabao\emloyee_class.php on line 31
      

  5.   

    谢谢大家,问题好像解决了。
    原来PHP 的类每调用一次类中的变量或函数都要加“$this->”(不知我的理解对不对, 我看一下还有没有其它错,然后加分,每个人不会少于20)
      

  6.   

    $this->$fields_num
    ==>
    $this->fields_num
      

  7.   

    是的,类调用方法和属性都要用 对象->方法 或 对象->属性。
    在类内,用$this->表示当前类。
    在类外,要用$obj=new xxx来创建一个实例对象,然后用 $obj->方法,$obj->属性来调用类的方法和属性
      

  8.   

    对不起,没有时间上网,未加分啊!问题还没有解决阿:
    class field2table{
    var $domain;
    var $user;
    var $pwd="";
    var $conn;
    var $db;
    var $table;
    var $fields;
    var $fields_num;
    // @$fields=($db,$table,$link);
    function conn_server($domain,$user,$pwd){
    $this->conn=mysql_connect($domain,$user,$pwd);
    }
    function conn_table($db,$table,$conn){
    (这是28项) $this->fields=mysql_list_fields($db,$table,$conn);
    }
    function sun_fields($fields){
    (这是31项) $this->fields_num=mysql_num_fields($fields);
    }
    function out_tables(){
    for ($i = 0; $i < $this->fields_num; $i++) {
    Warning: mysql_list_fields(): supplied argument is not a valid MySQL-Link resource in E:\work_space\web\vicp\jiabao\emloyee_class.php on line 28Warning: mysql_num_fields(): supplied argument is not a valid MySQL result resource in E:\work_space\web\vicp\jiabao\emloyee_class.php on line 31