监视某个数据库字段的使用情况

时间:2010-07-05 13:02:19

标签: php mysql database

我有一个讨厌的问题。我想摆脱某个数据库字段,但我不确定它所调用的代码位。有没有办法找出这个字段的使用/调用的位置(除了搜索代码的文本;这个字段如何命名为'email',这是相当无用的)?

干杯

5 个答案:

答案 0 :(得分:2)

我首先会在文件中搜索表名的文本,然后只搜索包含字段名称的表名的表。

我写了一个程序,为了我自己的目的这样做。它构建了表和字段的内存列表,并将表与字段相关联。然后它循环遍历表,搜索包含表名的代码文件,然后在这些文件中搜索找到的表中的字段。我建议你使用类似的方法。

答案 1 :(得分:1)

设置mysql以记录所有查询一段时间可能会有所帮助。查询会给你提示在哪里看

答案 2 :(得分:1)

暴力破解 - 设置测试实例 - 删除列 - 并运行测试套件。

答案 3 :(得分:0)

在该表上创建一个插入前触发器,用于监视该列上的插入。

同时创建另一个名为monitor的表,其中只有一列email

使该表将NEW.email字段的值插入monitor.email以及实际表中。

因此您可以运行应用程序并检查监视器表中是否存在任何非空值

答案 4 :(得分:-1)

您应该在PHP中执行此操作我希望

例如:

<?php
class Query
{
    var $command;
    var $resource;
    function __construct($sql_command = '')
    {
       $this->command = $sql_command;
    }

    public function setResource($resource)
    {
        $this->resource = $resource;
    }
}

//then you would have some kind of database class, but here we would modify the query method.

class Database
{
    function query(Query $query)
    {
       $resource = mysql_query($query->command);
       $query->setResource($resource);

       //Then you can send the class to the monitor
       QueryMonitor::Monitor($query);
    }
}

abstract class QueryMonitor
{
    public static Monitor(Query $query)
    {
       //here you use $query->resource to do monitoring of queryies
       //You can also parse the query and gather what query type it was:-
       //Select or Delete, you can also mark what tables were in the Query
       //Even meta data so
       $total_found = mysql_num_rows($query->resource);
       $field_table = mysql_field_table ($query->resource);
       //Just an example..
    }
}
?>

显然它会比这更先进,但你可以设置一个系统来监控日志文件中的每个查询和每个查询元数据,或者w.e