0

$nameという名前の関数で、while ループで定義されている変数にアクセスしたいと考えていますsendMail。どういうわけかループ内に関数を組み込む必要がありますか?

<?php
while ($row = mysql_fetch_assoc($result))
{
    print_r($row); echo "<br><br>";
    $name = $row['Name'];
    $date = $row['sDate'];
    $time = $row['sTime'];
    $phone = $row['Phone'];

    $email = $row['Email'];
    sendMail($row['Email']);

    $company = $row['Company'];
    $course = $row['Course'];
    $ref = $row['Reference'];
    $optout = $row['optout'];

    echo "<tr bgcolor=#ABB5F6>
    <td>$name</td>
    <td>$date</td>
    <td>$time</td>
    <td>$phone</td>
    <td>$email</td>
    <td>$company</td>
    <td>$course</td>
    <td>$ref</td>
    <td>$optout</td>
    </tr>";
}

// Mail to $to and $emailarray recipients
function sendMail($to)
{
    $subject = 'Test mail';
    $message = 'Hello'.$name; // I want $name from the while loop
    $headers = array();
    $headers[] = "From:" . "myemail@email.com";
    $headerz = implode("\r\n", $headers);

    mail($to, $subject, $message, $headerz);
}

?>
4

4 に答える 4

5

配列をsendMail()受け入れて(つまり、$row), or add another parameter tosendMail()which is called$ name`にして、それを渡します。

すなわち。

function sendMail($to, $name)

次のように呼ばれます:

sendMail($row['Email'], $row['Name']);

パラメータはおそらく最も簡単です。グローバルのルートをたどらないでください。形式は未定義であり、テーブル構造が変更される可能性があるため、配列も使用しないことをお勧めします。厳密に定義されたクラスで使用する場合mysql_fetch_object、これが最も受け入れられるソリューションになります(もちろん、PDO / MySQLiも使用します)...特に$row、将来、より多くのデータを使用するように拡張することを計画している場合。

于 2012-07-10T15:33:45.873 に答える
5

$nameを関数sendMailに渡してみませんか。

// Mail to $to and $emailarray recipients
function sendMail($to, $name)
{
    $subject = 'Test mail';
    $message = 'Hello'.$name; // I want $name from the while loop
    $headers = array();
    $headers[] = "From:" . "myemail@email.com";
    $headerz = implode("\r\n", $headers);

    mail($to, $subject, $message, $headerz);
}

次に、name変数を使用してsendMail関数を呼び出しますか?

于 2012-07-10T15:33:49.093 に答える
5

なぜそれを渡すだけではないのですか?

function sendMail($to, $name);

と電話

sendMail($row['Email'], $row['name']);
于 2012-07-10T15:34:04.547 に答える
0

コードを機能させるために必要な変更を行いました。

<?php
            while ($row = mysql_fetch_assoc($result))
            {
                print_r($row); echo "<br><br>";
                $name = $row['Name'];
                $date = $row['sDate'];
                $time = $row['sTime'];
                $phone = $row['Phone'];

                $email = $row['Email'];

                // i added name as a parameter
                sendMail($row['Email'],$name);

                $company = $row['Company'];
                $course = $row['Course'];
                $ref = $row['Reference'];
                $optout = $row['optout'];

                echo "<tr bgcolor=#ABB5F6>
                <td>$name</td>
                <td>$date</td>
                <td>$time</td>
                <td>$phone</td>
                <td>$email</td>
                <td>$company</td>
                <td>$course</td>
                <td>$ref</td>
                <td>$optout</td>
                </tr>";

            }

            // Mail to $to and $emailarray recipients
            // i added name as a parameter
            function sendMail($to,$name)
            {
                $subject = 'Test mail';
                $message = 'Hello'.$name; // I want $name from the while loop
                $headers = array();
                $headers[] = "From:" . "myemail@email.com";
                $headerz = implode("\r\n", $headers);

                mail($to, $subject, $message, $headerz);
            }

            ?>
于 2012-07-10T15:42:35.917 に答える