修改phpMyAdmin的补充
在《修改phpMyAdmin》中基本实现了对phpMyAdmin的“选择/编辑”功能的修改目标。但在使用中发现这样修改以后,程序原来所有的“插入”功能将无法实现。为了恢复程序的原有功能,对修改的程序要作如下调整:
在tbl_change.php3的开头修改如下:
$table_def = mysql_db_query($db, "SHOW FIELDS FROM $table");
if(isset($sql_query)){   //xueroom
   $sql_query=stripslashes($sql_query);
   $sql_query=preg_replace("/where.*$/","",$sql_query);
   $sql_fields=preg_replace("/^SELECT\s+/","",$sql_query);
   $sql_fields=preg_replace("/\s+from.*$/","",$sql_fields);
   $fields_def=preg_split("/,/",$sql_fields);
   //dump_array($fields_def);
   //kong added

if (isset($primary_key))
   {
   $primary_key = stripslashes($primary_key);
//   $result = mysql_db_query($db, "SELECT * FROM $table WHERE $primary_key");
   $result = mysql_db_query($db, $sql_query." WHERE $primary_key");
   $row = mysql_fetch_array($result);
   }
else
   {
   $result = mysql_db_query($db, $sql_query." LIMIT 1");
   //$result = mysql_db_query($db, "SELECT * FROM $table LIMIT 1");
   }
}//xueroom
else{  //xueroom
if (isset($primary_key))
   {
   $primary_key = stripslashes($primary_key);
   $result = mysql_db_query($db, "SELECT * FROM $table WHERE $primary_key");
//   $result = mysql_db_query($db, $sql_query." WHERE $primary_key");
   $row = mysql_fetch_array($result);
   }
else
   {
//   $result = mysql_db_query($db, $sql_query." LIMIT 1");
   $result = mysql_db_query($db, "SELECT * FROM $table LIMIT 1");
   }
}//xueroom


在中间位置上修改为:

$f=0; //xueroom
   for ($i=0;$i<mysql_num_rows($table_def);$i++)
       {
       $row_table_def = mysql_fetch_array($table_def);
    if((!isset($sql_query))or($fields_def[$f]==$row_table_def['Field'])){      //xueroom     
     ++$f; //xueroom
.........
              echo "</tr>\n";
        }//xueroom
       }

由我增加的部分用“//xueroom”注标明。主要是思路是增加了一个判断:即是否有参量$sql_query传来,如果有,则是“选择/修改”,如果没有则与修改以前一样处理数据。
            2001/1/3