Как обрабатывать несколько запросов?


у Меня есть сомнения, связанные хороших практик программирования. Как обрабатывать несколько запросов в одной и той же странице PHP. Например, следующий код:

    $qr = "SELECT historico.*, funcionarios.nome FROM historico INNER JOIN funcionarios ON (historico.funcionario_id = funcionarios.funcionario_id)";
    $resultado = mysql_query($qr);

, Логотип ниже, на моей странице, я должен сделать еще одну query:

    $qr2 = "SELECT diasplantao.*, funcionarios.nome FROM diasplantao INNER JOIN funcionarios ON (diasplantao.funcionario_id = funcionarios.funcionario_id)";      
    $resultado2 = mysql_query($qr2);

И так далее, может существовать, пока другие еще. Мой вопрос: Какой лучший способ справиться с этим? Есть ли способ сделать то, что код не так грязно, так много переменных.

Author: Vinicius Brasil, 2014-05-20

3 answers

, способ улучшить организацию конструкция процедурного отделить php от html и перенос кода(лапша) в функции. Помните также, использовать api, современных, для соединения с базой данных, что функции mysql_*

Например:

Macarrao.php

<?php
    $qr = "SELECT historico.*, funcionarios.nome FROM historico 
           INNER JOIN funcionarios
           ON (historico.funcionario_id = funcionarios.funcionario_id)";
    $resultado = mysql_query($qr);
?>

<table>
    <tr>
        <td>Nome</td>
        <td>Matricula</td>
        <td>Data entrada</td>
        <td>Data saida</td>
    </tr>

    <?php

    while($row = mysql_fetch_assoc($resultado)){
    echo
    '<tr>
        <td>'. $row['nome']  .'</td>
        <td>'. $row['matricula'] .'</td>
        <td>'. $row['entrada'] .'</td>
        <td>'. $row['saida'] .'</td>
    </tr>';
    ?>

</table>

1 - Удалите код начале и while macarrao.php и создайте новый файл, который может быть sql/сотрудники.php, будет выглядеть таким образом:

include 'conexao.php';

function getHistorio($conexao){
    $sql = 'SELECT historico.*, funcionarios.nome FROM historico
            INNER JOIN funcionarios
            ON (historico.funcionario_id = funcionarios.funcionario_id)';
    $query = mysql_query($sql, $conexao) or die(mysql_error());

   $historicos = array();
   while($row = mysql_fetch_assoc($query)){
       $historicos[] = $row;
   }
    return $historicos;
}
//outras funções....

2 - Скопируйте содержимое html макароны.php-файл, новый, view/lista_historico.php, который будет иметь только один foreach, чтобы получить список historicos

<?php
    include 'sql/funcionario.php';
    $historico = getHistorio($conexao);
?>
<table>
    <tr>
        <td>Nome</td>
        <td>Matricula</td>
        <td>Data entrada</td>
        <td>Data saida</td>
    </tr>

    <?php foreah($historico as $item){ ?>
    <tr>
        <td><?php echo $item['nome']; ?></td>
        <td><?php echo $item['matricula']; ?></td>
        <td><?php echo $item['entrada']; ?></td>
        <td><?php echo $item['saida']; ?></td>
    </tr>
  <?php } ?>

Рекомендуем к прочтению:

Квартира PHP vs Symfony

Почему мы не должны использовать функции mysql_*?

MySQLi PDO vs - какие из них рекомендуется использовать?

 5
Author: rray, 2017-04-13 12:59:38

Лично Я предпочитаю использовать полные имена, которые облегчают debug более поздней версии и поддержка других людей. Пример:

$queryFuncionarios 

$queryDiasPlantao

И Таким образом значительно облегчает

 5
Author: Otto, 2014-05-20 12:52:39

Перед выполнением нескольких запросов, вы должны проанализировать, являются ли они queries независимых или нет.

Представьте себе, например, система регистрации акций, которая регистрирует все действия, выполненные для конкретного пользователя.

При выполнении двух запросов одновременно, один для вставки и один для регистрации включение пользователем X, если выйдет из строя, а второй нет, вы, оказывается, есть несоответствия сведений.

Конечно, в системные журналы, которые, как правило, часто в чистоте, не очень беспокоит проблема, но это проблема, действительно.

В то время как если вы попытаетесь вставить не удается, второй запрос не будет выполнен, и, в придачу, вы можете манипулировать ошибке, информирующее usuáiro, что это действие в определенный сбой, а не " общая ошибка "что-то пошло не так".

 1
Author: Bruno Augusto, 2014-05-20 16:24:33