2016-04-24 10 views
0

私は購読者に電子メールを送信しています。すべての電子メールアドレスはMYSQlのテーブルに挿入されています。しかし、私は同じデータベースの他のテーブルにあるいくつかの記事を送りたいと思う。私を助けてください。 "$ name"では1行しか取得できません(与えられたIDを持つすべてのデータを取得したい)。PHPでメールを送信中にMYSQLからデータを取得する

<?php if(isset($_POST['send'])){ 
$servername = "localhost"; 
$username = "username "; 
$password = "password "; 
$dbname = "db"; 

$conn = new mysqli($servername, $username, $password, $dbname); 
if ($conn->connect_error) { 
die("Connection failed: " . $conn->connect_error); 
} 

$sql = "SELECT * FROM table1 where id in (1, 3, 2, 4)"; 
$result = $conn->query($sql); 

if ($result->num_rows > 0) { 
while($row = $result->fetch_assoc()) { 

$name = $row["title"]; 

}}else {} 
$conn->close(); 
} 
?> 

<?php if(isset($_POST['send'])){ 
$servername = "localhost"; 
$username = "username"; 
$password = "password"; 
$dbname = "db"; 

$conn = new mysqli($servername, $username, $password, $dbname); 

if ($conn->connect_error) { 
die("Connection failed: " . $conn->connect_error); 
} 

$sql = "SELECT email, subid FROM table2"; 
$result = $conn->query($sql); 

if ($result->num_rows > 0) {while($row = $result->fetch_assoc()){ 

$subid = $row["subid"]; 

$email_to = $row["email"]; 
$subject = "Newsletter | OnlineDealsIndia"; 
$header = "From: OnlineDealsIndia <[email protected]>\r\n"; 
$header.= "MIME-Version: 1.0\r\n"; 
$header.= "Content-Type: text/html; charset=utf-8\r\n"; 
$header.= "X-Priority: 1\r\n"; 

$message = '<h3>Todays Top Deals!</h3><hr> 

<li>' .$name. '</li> 

<a href="http://www.onlinedealsindia.in/newsletter/unsubscribe/?subid=' .$subid. '">Click Here</a> To Unsubscribe 
'; 
mail($email_to,$subject,$message,$header); 
}}else {} 

$conn->close(); 
} 
?> 

"$ name"には、上記のIDを指定したすべての行を取得する必要があります。

すべての回答が高く評価されます。ありがとうございました!

+0

を。それを配列に追加したくないのですか? – tadman

+0

"$ name"は4行すべてをフェッチして表示する必要はありません。 –

+0

'$ name = $ value'は魔法のようにリストを累積しません。 '$ name [] = $ value'は配列に追加されます。 – tadman

答えて

0

これはトリックを行う必要があります:あなたは `$ NAME`を取得し、同じ場所に何度も何度もそれを設定している一つのループでは

<?php if (isset($_POST['send'])) { 
    $servername = "localhost"; 
    $username = "username "; 
    $password = "password "; 
    $dbname  = "db"; 

    $conn = new mysqli($servername, $username, $password, $dbname); 
    if ($conn->connect_error) { 
     die("Connection failed: " . $conn->connect_error); 
    } 

    $sql = "SELECT * FROM table1 where id in (1, 3, 2, 4)"; 
    $result = $conn->query($sql); 

    $subject = "Newsletter | OnlineDealsIndia"; 
    $header = "From: OnlineDealsIndia <[email protected]>\r\n"; 
    $header .= "MIME-Version: 1.0\r\n"; 
    $header .= "Content-Type: text/html; charset=utf-8\r\n"; 
    $header .= "X-Priority: 1\r\n"; 

    $message = '<h3>Todays Top Deals!</h3><hr><ul>'; 
    if ($result->num_rows > 0) { 
     while ($row = $result->fetch_assoc()) { 
      $message .= '<li>' . $row["title"] . '</li>'; 
     } 
    } 
    $message .= '</ul><a href="http://www.onlinedealsindia.in/newsletter/unsubscribe/?subid=' . $subid . '">Click Here</a> To Unsubscribe'; 

    $sql = "SELECT email, subid FROM table2"; 
    $result = $conn->query($sql); 

    if ($result->num_rows > 0) { 
     while ($row = $result->fetch_assoc()) { 
      $subid = $row["subid"]; 
      $email_to = $row["email"]; 
      mail($email_to, $subject, $message, $header); 
     } 
    } 

    $conn->close(); 
} 
?> 
+0

もう一度開いても意味がないように見えます。 – tadman

+0

このコードを改善するための余地がさらに増えました。質問からこの特定の問題をどのように修正するかを示すために、可能な限り小さな変更を行いました。 –

+0

ええ、本当にあなたに違反していない、ちょうど観察をしています。 – tadman

関連する問題