-1

問題: どちらのエコーからも出力がなく、クエリが結果を返すにもかかわらず電子メールが送信されません。

コード:

<?php
$link = mysqli_connect('localhost','USER','PASSWORD','MY-DB');

$result = mysqli_query($link, "'SELECT * FROM Current WHERE  Status = 'IE-Window-Missing' order by location desc" );
$headers = 'From: SCS@cl.com' . "\r\n" .
'Reply-To: SCS@cl.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();

if($result->num_rows >= 1){
$email = "d@cl.com";
$subject = "One or more devices have IE windows missing";
$message='The following devices are having issues: "';

while($row=$result->fetch_assoc()) {
$message.="{$row['Location']}\r\n";
}

$message.="has been accepted for review at redacted.";
if(mail($email, $subject, $message, $headers)) {
echo "Winning";
  //mail successfully sent
} else {
    echo "fail";
}
}
?>

DB の単純な SQL クエリを実行すると、結果が得られます...ここで何が問題になっているのでしょうか?

ありがとう、

4

2 に答える 2

1
$result = mysqli_query($link, "'SELECT * FROM Current WHERE  Status = 'IE-Window-Missing' order by location desc" );

問題は、mysqli_query からの戻り値をチェックしていないことです。あなたはそれが機能していると仮定しています。すべてのecho通話はif($result->num_rows >= 1){小切手の中にあります。したがって、クエリが失敗した場合、それらのどれにも到達しません。

実際の問題は次のとおりです。

mysqli_query($link, "'SELECT * 
                     ^

'SELECT クエリの先頭に余分なものがあります。これにより、無効な SQL 文字列が生成されます。これは、クエリが失敗したことを意味します。返されるレコードはありません。

でクエリからの応答を確認し、mysqli_error適切に応答する必要があります。

于 2013-08-29T15:13:47.883 に答える