PHP хранит запросы БД во включаемом файле, как? - PullRequest
1 голос
/ 09 октября 2010

Я только изучаю PHP и пытаюсь выяснить, как можно хранить запросы к базе данных в отдельном файле как часть класса, метода или просто как простые переменные.

Например: у меня есть запрос, который выглядит так:

$checkuser = mysql_query("SELECT UserName, Email FROM users 
                            WHERE UserName = '$username4db' OR EMAIL = '$email4db'") 
             or die($checkuser_error);

Вместо того, чтобы писать это внутри файла, я бы хотел переместить это в центральное место и затем использовать их оттуда.

Я пытался использовать файл включения и просто вызывать переменную на месте, но она не работает.

Ответы [ 5 ]

1 голос
/ 09 октября 2010

Вы должны взглянуть на шаблон проектирования MVC, цель которого - обеспечить чистый способ организации кода на основе функций.

Модели - это то, куда идет код взаимодействия с вашей базой данных.В зависимости от реализации MVC это иногда является прямым представлением таблицы базы данных, или это может быть набор функций, которые вы пишете сами, чтобы справиться с проблемой.

Представления предназначены для отображения кода.Как правило, при написании представлений в представление должны входить только HTML и базовый PHP (отображение переменных, цикл foreach для построения таблицы).

В контроллере находится логика программы.Из контроллера вы вызываете модели для обработки данных, необходимых для построения данных, которые затем передаются в представление.

Это очень простое объяснение, и всегда в Википедии есть что сказать по теме: http://en.wikipedia.org/wiki/Model-view-controller.

В PHP существует множество сред MVC, которые вы можете использовать, чтобы иметь хорошую отправную точку для создания сайтов.Я использую и рекомендую CodeIgniter , поскольку он очень прост в использовании и гибок в реализации.

1 голос
/ 09 октября 2010

Хранение запросов в центральном месте вряд ли имеет смысл IMO, так как они всегда будут частью логики программы, и вам нужно будет их видеть (и изменять), когда вы работаете над потоком программы.

Вы могли бы соединить что-то с запросами, содержащими заполнители, которые затем заполняете, используя sprintf(), но я не вижу в этом смысла.

0 голосов
/ 09 октября 2010

Ваш вопрос имеет смысл и бессмыслицу.
Вы можете использовать ORM для инкапсуляции запроса в некоторый класс. Это будет иметь смысл.
Но хранить необработанные запросы не имеет смысла. Особенно в форме, которую вы разместили. Все запросы будут выполняться безоговорочно, независимо от того, нужны вам эти данные или нет.
Чтобы не включать его в вызов функции

function checkuser($username4db, $email4db) {
  $sql = "SELECT UserName, Email FROM users WHERE UserName = %s OR EMAIL = %s";
  return db::getrow($sql, $username4db, $email4db); 
}
  • в этом случае запрос будет выполняться только при вызове функции checkuser ().

но я все еще не вижу смысла хранить все запросы сайта в одном файле. Почему бы не хранить его логически, основываясь на том, к какой части сайта относится этот запрос?

0 голосов
/ 09 октября 2010

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

Вместо этого вы можете назначить функцию для каждого запроса. Просто имейте файл, который включает все запросы, каждый из которых вы хотите определить в функциях. Поэтому, когда вам нужен какой-то конкретный запрос из включенного файла, вы просто запускаете get_random_data_query_uno () или что у вас есть.

0 голосов
/ 09 октября 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...