2011-07-13 10 views
1

メッセージが表示されたら、MySQLデータベースの値をユーザーに電子メールで送信しようとしています。正しい値で電子メールメッセージの本文に情報を渡すことができません。ここでは、コードのサンプルです:私はタイトルの値を表示するために取得するには、whileループ内の配列を実行しようとしている電子メールでMySQLテーブル情報を送信する際のヘルプが必要

mysql_connect ("host","name","pass") or die (mysql_error()); 
mysql_select_db ("db_name"); 

$sql = mysql_query("select * from table_name where id = '$id'"); 
//$id is previously defined as the users id 
while ($row = mysql_fetch_array($sql)){ 
$title = $row["title"]; 
} 

$email = '[email protected]' 
$subject = "Titles"; 
$body = "Title: " . $title; 

if (mail($email, $subject, $body)) { 
echo("<p>successfully sent. "</p>"); 
} else { 
echo("<p>delivery failed...</p>"); 
} 

が、やはり私は、これらの値は、電子メールメッセージに持ち越すことを得るように見えることはできません。

これは、各ユーザーに複数のタイトルが送信されていることを前提としています。理想的には、最終的な電子メールメッセージは、

Title: Title1 
Title: Title2 
Title: Title3 
Title: Title4 
Title: Title5 

のようになりますが、多くのタイトルが配列に含まれています。ご協力いただきありがとうございます。

答えて

0
mysql_connect ("host","name","pass") or die (mysql_error()); 
mysql_select_db ("db_name"); 

$body = ''; // start with empty string 

$sql = mysql_query("select * from table_name where id = '$id'"); 
//$id is previously defined as the users id 
while ($row = mysql_fetch_assoc($sql)) 
{ 
    $body .= 'Title: ' . $row['title'] . "\n"; 
} 

$email = '[email protected]' 
$subject = "Titles"; 
// removed $body= ... 

if (mail($email, $subject, $body)) { 
echo("<p>successfully sent. "</p>"); 
} else { 
echo("<p>delivery failed...</p>"); 
} 
0

最初のもの:このコードは、SQLインジェクション攻撃のために非常に熟しています。修理する! http://www.learnphponline.com/security/sql-injection-prevention-mysql-php

$タイトル変数はループ中ですが、スコープの外側にはありません。それを外に引き出す。

http://www.dreamincode.net/forums/topic/102020-variable-scope-within-while-loop/

+0

あなたのコメントをありがとうが、私はまだ述べたように配列データを読み込む方法の問題に直面しています。配列の結果を表示するための印刷と検索オプションがありますか? – Presto

0

あなたは連結の問題を抱えている、

// use this code inside the while 
$title .= 'Title: ' . $row["title"] . '<br>'; // notice the dot before the equal 

//and this line in replace of $body = "Title: " . $title; 
$body = $title; 
0

私はこのような配列における店舗のタイトルのに提案したい:体を作製し、その後

$title = array(); 

while ($row = mysql_fetch_array($sql)){ 

    // [] adds a new element at the end of an array 
    $titles[] = $row["title"]; 

} 

試してみましょう:

$body = 'You've gained these titles: ';  

foreach($titles as $title) { 

     // keep all titles in separate lines of the email body 
     $body .= "\nTitle: " . $title; 

} 
関連する問題