Подход к переносу данных - PullRequest
1 голос
/ 07 января 2011

Я занимаюсь разработкой на PHP и MySQL.

Информация о текущем вошедшем в систему пользователе хранится во многих различных таблицах.Информацию, которая мне нужна на каждой странице, я предварительно загружаю.Однако, если что-то требуется из редко доступной таблицы - тогда я делаю

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

. Я хотел бы упростить вышеизложенное до такой степени, что мне не нужно указывать, что запрос должен быть ограничен этим конкретнымпользователь.Идеальным вызовом функции было бы:

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

Очевидно, мне нужно было бы проанализировать SQL и добавить предложение WHERE.Или добавьте к уже существующему предложению.

Вопросы : есть ли инструменты для этого?Как я могу развить это?Это даже хорошая идея?


Редактировать : Найден синтаксический анализатор SQL , который может помочь тем, кто заинтересован в этом.

Ответы [ 2 ]

0 голосов
/ 07 января 2011

Похоже, вы хотите добавить функцию для пользователя

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');
0 голосов
/ 07 января 2011

Обычно я создаю класс с именем User и создаю экземпляр singleton для каждой страницы (с зарегистрированным пользователем.). Дополнительные экземпляры могут быть созданы для других пользователей (например, $ u2 = новый пользователь ($ name);) Затем такие вещи внедряются в пользователя.

...