Выполнение запроса внутри WHILE / Loop - PullRequest
0 голосов
/ 27 октября 2011

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

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

Вот код, который у нас сейчас есть. Любая помощь будет принята с благодарностью.

<?php

//Connect to mysql server
$link = mysql_connect(localhost, xxxxxxx, xxxxxxxx);
if(!$link) {
    die('Failed to connect to server: ' . mysql_error());
}

//Select database
$db = mysql_select_db(systm_test);
if(!$db) {
    die("Unable to select database");
}
$count = 0; 
$date = date("Y-m-d", $_SERVER['REQUEST_TIME']);
$day = date("l F jS, Y", $_SERVER['REQUEST_TIME']);

$qry= sprintf("SELECT p.tech, p.date, e.email, e.fullname, "
            . "COUNT( * ) AS record_count "
            . "FROM users_test AS e "
            . "JOIN sc AS p ON e.tech = p.tech "
            . "WHERE DATE = '%s' "
            . "GROUP BY p.tech, e.fullname, e.email, p.date",
          $date
      );

$result = mysql_query($qry); 

if (!$result) { 
    # something went wrong... 
    error_log(sprintf('%d: %s', mysql_errno(), mysql_error())); 
    echo 'Unable to retrieve callpost report';

} else { 

    while ($node = mysql_fetch_object($result)) { 



        $headers = "From: xxxxxxxxxx <noreply@xxxxx.xxx>\r\n"; 
        $headers .= "Content-Type: text/html; charset=\"iso-8859-1\"\r\n"; 
        $headers .= "X-Priority: 1 (Higuest)\r\n"; 
        $headers .= "Importance: High\r\n"; 

        $subject = sprintf('%s | Post Report', $node->fullname); 

            $date = date("Y-m-d", $_SERVER['REQUEST_TIME']);


        $body = sprintf( 
            'Dear %s, <br><br> 
            Your daily post report for %s. 
            <br> 
            <br>     
            System Info<br> 
            ------------------------------------<br> 
            Member Id:      <b>%d</b><br> 
            Posts:      <b>%d</b>
            <br>
            System Name:    TEST<br>', 

            $node->fullname, 
            $day, 
            $node->tech, 
            $node->record_count 
        ); 

        if (!mail($node->email, $subject, $body, $headers)) 
        { 
            error_log( 
                sprintf('failed sending email report to %s (%d)', 
                    $node->fullname, 
                    $node->tech) 
            ); 
        } 
    } //end while statement 
     mail($node->email, $subject, $body, $headers);
  }
}
?>

1 Ответ

0 голосов
/ 27 октября 2011

Подбор - это то, что вы ищете. Нечто подобное.

"SELECT p.tech, p.date, e.email, e.fullname, "
        . "COUNT( * ) AS record_count, "
        . "(SELECT COUNT(*) FROM Posts z WHERE z.author = e.tech) as post_count "
        . "FROM users_test AS e "
        . "JOIN sc AS p ON e.tech = p.tech "
        . "WHERE DATE = '%s' "
        . "GROUP BY p.tech, e.fullname, e.email, p.date"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...