2012-07-10 4 views
0

sendMail이라는 함수에서 while 루프에 정의 된 $name 변수에 액세스하려고합니다. 루프 내에서 어떻게 든 함수를 통합해야합니까? .PHP의 함수에서 while 루프의 변수에 액세스하는 방법은 무엇입니까?

<?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:" . "[email protected]"; 
    $headerz = implode("\r\n", $headers); 

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

?> 
+0

sendMail ($ name)을 while 루프 (정의 이후)에 추가하면 sendMail() 안에 var에 $가 추가됩니다. 또는 모든 $ 행을 전달하여 모든 값을 가질 수 있습니다. sendMail ($ row) – somedev

+0

변수에 액세스하고 설정할 수 있으며 함수를 호출 할 수 있지만 변수를 호출 할 수는 없습니다. mysql 확장은 구식이며 지원 중단 될 예정입니다. 새 코드는 mysqli 또는 PDO를 사용해야하며, 둘 다 준비된 문에 대한 지원과 같은 중요한 이점이 있습니다. – outis

답변

5

은 왜 그냥 기능 센드 메일에 $ 이름을 전달?

5

중 하나를 만들 sendMail() 배열 (즉 $row), or add another parameter to 센드 메일() which is called $ name`을 받아들이고 그것을 통과

을 즉

function sendMail($to, $name) 

처럼 전화 :..

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

매개 변수는 아마도 가장 쉽습니다. 전역. 형식이 정의되지 않았고 테이블 구조가 변경 될 수 있으므로 배열을 사용하지 않을 것을 제안합니다. 만약 당신이 mysql_fetch_object을 강력하게 정의 된 클래스와 함께 사용한다면 이것은 가장 수용할만한 해결책이 될 것입니다 (물론 PDO/MySQLi도 사용합니다) ... 특히 더 많은 데이터를 사용하도록 확장하려는 경우 $row 미래.

// 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:" . "[email protected]"; 
    $headerz = implode("\r\n", $headers); 

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

을 그리고 이름의 변수를 사용하여 센드 메일 함수를 호출 :

5

왜 패스하지 않습니까?

function sendMail($to, $name); 

내가 코드가 작동해야하기 위해 필요한 변경 한

sendMail($row['Email'], $row['name']); 
0

호출합니다.

관련 문제