Search code examples
phpmysqlword-wrap

Approach to data wrapping


I'm developing in PHP and MySQL.

The information about the currently logged in user is stored in many different tables. The information that I need on each page, I preload. However if something is needed from a rarely accessed table - then I do

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

I would like to simplify the above to a point where I don't have to specify that the query should be limited to this particular user. An ideal function call would be:

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

Obviously I'd have to parse the SQL and add a WHERE clause. Or add to the already existing clause.

Questions: are there tools to do this? How can I develop this? Is this even a good idea?


Edit: Found an SQL parser that may assist those interested in doing this.


Solution

  • Looks like you want to add a function to user

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

    The issue is getting $db, does it belong to user? do you have a function to get it?

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

    and call it as

    $user->getRowFrom('rareTableNo4');