Поместите все запросы SQL в один файл PHP - PullRequest
0 голосов
/ 08 августа 2011

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

Сайт состоит из статических html-шаблонов. Данные динамически заполняются в эти шаблоны с помощью php require_once

Например, это упрощенная версия домашней страницы

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Home</title>
</head>
<body>
<?php require_once $_SERVER['DOCUMENT_ROOT']."/includes/header.php"; ?>
<?php require_once $_SERVER['DOCUMENT_ROOT']."/includes/connection.php"; ?>
<?php require_once $_SERVER['DOCUMENT_ROOT']."/includes/sql.php"; ?>
<?php require_once $_SERVER['DOCUMENT_ROOT']."/includes/content.php"; ?>
<?php require_once $_SERVER['DOCUMENT_ROOT']."/includes/footer.php"; ?>
</body

Верхний и нижний колонтитулы сами по себе являются статическими, поэтому включены как есть. Однако для отображения нужного содержимого я устанавливаю соединение (connection.php) с базой данных, запрашиваю его (sql.php) и затем отображаю его (content.php).

Я повторяю это для всех остальных страниц сайта, каждая страница ссылается на измененный файл sql.php.

Все это работает, но я знаю, что это не очень эффективно.

У меня вопрос, как я могу реструктурировать свои файлы / код, чтобы, надеюсь, в итоге я получил один файл, содержащий все мои SQL-запросы и каким-то образом «выбрал» правильный запрос для выполнения, в зависимости от того, какая страница его запросила.

Спасибо за вашу помощь.

Ответы [ 2 ]

0 голосов
/ 08 августа 2011

Если вам нужно, чтобы все было в одном файле, вы можете иметь двумерный массив запросов, а затем выполнять запросы только для нужной страницы:

$queries = array(
    'home_page' => array( /* insert queries here */ ),
    'contact_page' => array( /* insert queries here */ ),
    'page_Y' => array( /* insert queries here */ ),
    'i_like_turtles' => array( /* insert queries here */ ),
);

Тогда на page_Y вы просто сделаетеforeach($queries['page_Y'] as $query) { /* Execute query */ }

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

0 голосов
/ 08 августа 2011

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

$something->this_query();

http://php.net/manual/en/language.functions.php

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