2012-01-10 12 views
0

を投げます。私のSQL構文が正しいかどうかわからないのですか?phpmailerのは、私はニュースレターを送信するためにphpmailerのを使用しようとしていますが、私は次のエラー私はそれをトリガーしようとするたびに取得しておくMySQLエラー

Warning: mysql_fetch_array() : supplied argument is not a valid MySQL result resource in view.html.php(38):eval()'d code on line 32

<?php 
$formid = $_GET[token]; 
$templatequery = mysql_query(" 
    SELECT * 
    FROM hqfjt_chronoforms_data_addmailinglistmessage 
    WHERE cf_id = '$formid'" 
) or die(mysql_error()); 

$templateData = mysql_fetch_object($templatequery); 

$gasoiluserTemplate = $templateData->gasoilusers; 
$dervuserTemplate = $templateData->dervusers; 
$kerouserTemplate = $templateData->kerousers; 
$templateMessage = $templateData->mailinglistgroupmessage; 
?> 

<?php 
require_once('./send/class.phpmailer.php'); 
//include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded 
$mail = new PHPMailer(true); //defaults to using php "mail()"; the true param means it will throw exceptions on errors, which we need to catch 

// $body = file_get_contents('contents.html'); 
$body = 'Dear Test this is a test.'; 
// $body = preg_replace('/\\\\/i', $body); 

$mail->SetFrom('[email protected]', 'List manager'); 
$mail->AddReplyTo('[email protected]', 'List manager'); 

$mail->Subject = "Mailing List Test"; 

$query = " 
    SELECT leadname,businessname,email 
FROM hqfjt_chronoforms_data_addupdatelead 
WHERE keromailinglist='$kerolist' 
    AND dervmailinglist='$dervlist' 
    AND gasoilmailinglist='$gasoillist'"; 
$result = @MYSQL_QUERY($query); 

while ($row = mysql_fetch_array ($result)) { 
    $mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test 
    $mail->MsgHTML($body); 
    $mail->AddAddress($row["email"], $row["full_name"]); 
    $mail->AddStringAttachment($row["photo"], "YourPhoto.jpg"); 

    if(!$mail->Send()) { 
     echo "Mailer Error (" . str_replace("@", "&#64;", $row["email"]) . ') ' . $mail->ErrorInfo . '<br>'; 
    } else { 
     echo "Message sent to :" . $row["full_name"] . ' (' . str_replace("@", "&#64;", $row["email"]) . ')<br>'; 
    } 
    // Clear all addresses and attachments for next loop 
    $mail->ClearAddresses(); 
    $mail->ClearAttachments(); 
} 
?> 

EDIT >>>>>>

私は今、エラーチェックを追加しましたが、今ちょうどエラーなしで空白のページが、また、無メールを取得していますか?

  <?php 

        $formid = $_GET[token]; 
      $templatequery = mysql_query("SELECT * FROM hqfjt_chronoforms_data_addmailinglistmessage WHERE cf_id = '$formid'") or die(mysql_error()); 
      $templateData = mysql_fetch_object($templatequery); 

      $gasoiluserTemplate = $templateData->gasoilusers; 
      $dervuserTemplate = $templateData->dervusers; 
      $kerouserTemplate = $templateData->kerousers; 
      $templateMessage = $templateData->mailinglistgroupmessage; 
       ?> 
        <?php 
      require_once('./send/class.phpmailer.php'); 
      //include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded 

      $mail = new PHPMailer(true); //defaults to using php "mail()"; the true param means it will throw exceptions on errors, which we need to catch 

      // $body    = file_get_contents('contents.html'); 

      $body = 'Dear Test this is a test.'; 

      // $body = preg_replace('/\\\\/i', $body); 

      $mail->SetFrom('[email protected]', 'List manager'); 
      $mail->AddReplyTo('[email protected]', 'List manager'); 

      $mail->Subject  = "Mailing List Test"; 

      $query = "SELECT leadname,businessname,email FROM hqfjt_chronoforms_data_addupdatelead WHERE keromailinglist='$kerolist' AND dervmailinglist='$dervlist' AND gasoilmailinglist='$gasoillist'"; 
      $result = mysql_query($query); 

      // Bail out on error 
if (!$result) 
    { 
    trigger_error("Database error: ".mysql_error()." Query used was:  ".htmlentities($query), E_USER_ERROR); 
    die(); 
    } 


      while ($row = mysql_fetch_array ($result)) { 
       $mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test 
       $mail->MsgHTML($body); 
       $mail->AddAddress($row["email"], $row["full_name"]); 
       $mail->AddStringAttachment($row["photo"], "YourPhoto.jpg"); 

       if(!$mail->Send()) { 
       echo "Mailer Error (" . str_replace("@", "&#64;", $row["email"]) . ') ' . $mail->ErrorInfo . '<br>'; 
       } else { 
       echo "Message sent to :" . $row["full_name"] . ' (' . str_replace("@", "&#64;", $row["email"]) . ')<br>'; 
       } 
       // Clear all addresses and attachments for next loop 
       $mail->ClearAddresses(); 
       $mail->ClearAttachments(); 
      } 
      ?> 
+0

なぜ@MYSQL_QUERYを使用していますか –

+1

MYSQL_QUERY($ query)行の前にある@記号を削除して、その処理を確認してください。何が問題になったのかをより詳細に示すエラーメッセージを抑制する可能性が最も高いです。 – Tanoro

答えて

3

あなたのコードでは、それはすべてのエラーチェックを行っていないので、それが失敗したときに、クエリが静かに壊れる全く驚きではありません。エラーをチェックし、それが間違って何が起こっているかを教えてくれます - manual on mysql_query()またはこのreference question.に概説されているどのようにそれをすることができません。 mysql_query()の前にある@を削除してください。例:

これは、正確な問題と最終的なクエリの使用状況を示します。

あなたが表示するコードには、SQL injectionの脆弱性があります(根本原因の解決策でもあります)。これはあなたの質問を破っているかもしれません。

あなたがそうのように、すべての入力値にmysql_real_escape_string()を実行する必要があります。

$formid = mysql_real_escape_string($_GET["token"]); 
+0

は、固定された!、私は、私は SELECT leadname、BUSINESSNAME、hqfjt_chronoforms_data_addupdateleadからの電子メールを使用している必要がありますクエリに間違った値を使用していたが実現WHERE keromailinglist = '$ kerouserTemplate' AND dervmailinglist = '$ dervuserTemplate' AND gasoilmailinglist = '$ gasoiluserTemplate」 それが動作するようになりました!、とヘッドのおかげアップが本当の脱出をGET、私はあまりにも:-)ことを変更します –

0

関数呼び出し前@は何が起こっているのかを教えてくれなければならないエラーを抑制しています。

関連する問題