数据包装的方法

时间:2011-01-06 22:32:16

标签: php mysql wrapping

我正在开发PHP和MySQL。

有关当前登录用户的信息存储在许多不同的表中。我在每页上需要的信息,我预加载。但是,如果从很少访问的表中需要某些东西 - 那么我就

$newdata = $db->Query('SELECT * FROM rare_table WHERE user_id='.$user->id);

我想简化上述内容,以便我不必指定查询应限于此特定用户。一个理想的函数调用是:

$newdata = $user->Query('SELECT * FROM rare_table');

显然我必须解析SQL并添加一个WHERE子句。或者添加到现有的子句中。

问题:有没有工具可以做到这一点?我怎样才能发展这个?这甚至是个好主意吗?


修改:找到一个SQL parser,可以帮助那些有兴趣这样做的人。

2 个答案:

答案 0 :(得分:0)

我通常创建一个名为User的类,并为每个页面实例化一个单例(使用登录用户)。可以为其他用户创建其他实例(例如$ u2 = new User($ name);)然后将这些内容嵌入到User中。

答案 1 :(得分:0)

您希望向用户添加功能

public function getRow($tableName)
{
     $sql = "SELECT * FROM $tableName WHERE user_id = " . $this->$id;
     //run query

问题是获得$ db,它属于用户吗?你有功能吗?

public function getRowFrom($tableName)
{
     $sql = "SELECT * FROM $tableName WHERE user_id = " . $this->$id;
     $db = getDb(); //however you need to do this.  $this->db, DBTools::getDB(), call constructor here, etc.
     return $db->Query($sql);
}

并将其命名为

$user->getRowFrom('rareTableNo4');