0

私はphpが初めてです。次のコードを使用してメールを送信しようとしていました。私の参照文書はこれです。結果部分に関連していると思います。誰もこれを助けることができますか?私のエラーは以下のとおりです

Warning: Invalid argument supplied for foreach() in /home/mysite/public_html/sendmail.php on line 50

Warning: Invalid argument supplied for foreach() in /home/mysite/public_html/sendmail.php on line 70

私の完全なコードを以下に示します。ガイドしてください

require_once 'lib/swift_required.php';
include('database.php');
// Create the Transport
$transport = Swift_SmtpTransport::newInstance('smtp.mydomain.com', 25)
    ->setUsername('me@mydomain.com')
    ->setPassword('mypassword');

$transport = Swift_MailTransport::newInstance();
// Create the Mailer using your created Transport
$mailer = Swift_Mailer::newInstance($transport);

// Send the message
//$result = $mailer->send($message);

//database connection part
$con = mysql_connect("localhost","username","password");
if (!$con) {
    die('Could not connect: ' . mysql_error());
}
mysql_select_db("mydb", $con);

$sql = "SELECT email,name FROM email_test";     
$result = mysql_query($sql);

//tested the results, works fine 
while($row = mysql_fetch_array($result)) {
    echo "--".$row['email']."---";
}

//using result to get enail and user name
$replacements = array();
foreach ($result as $user) {
    $replacements[$user['email']] = array(
        '{email}'=>$user['email'],
        '{name}'=>$user['name']
    );
}

$decorator = new Swift_Plugins_DecoratorPlugin($replacements);
$mailer->registerPlugin($decorator);

$message = Swift_Message::newInstance()
    ->setSubject('Important notice for {name}')
    ->setBody("Hello {name}, we have reset your password");

foreach ($result as $user) {
    $message->addTo($user['email']);
}
4

1 に答える 1

2
  1. コメントのように:$resultmysql_resourceであり、配列ではありません。fetch_row実際に詳細を取得するには、そのリソースで実行する必要があります。コメントで言及されています (コードを現在のものに更新できますか?)

  2. 2 回目に結果を実行するときは、結果セットを「リセット」して先頭から開始する必要があります。mysql_data_seek($result, 0)トップに戻ると言ってこれを行うことができます。

于 2012-09-13T07:21:30.033 に答える