mysql/php选择行并发送电子邮件无效

mysql/php选择行并发送电子邮件无效,php,mysql,arrays,Php,Mysql,Arrays,我有一个PHP/mySQL脚本,用户可以在其中列出产品,当列出带有特定关键字的产品时,可以向其他用户发出警报。出于某种奇怪的原因,用户从未收到过电子邮件,而且电子邮件操作似乎也没有执行,无论我如何编写 在我进一步解释之前,这里是代码。本部分对每种产品进行批准(因为一次批准的产品可能不止一种)。此部件工作正常: $approve_array = $db->implode_array($_REQUEST['approve']); foreach

我有一个PHP/mySQL脚本,用户可以在其中列出产品,当列出带有特定关键字的产品时,可以向其他用户发出警报。出于某种奇怪的原因,用户从未收到过电子邮件,而且电子邮件操作似乎也没有执行,无论我如何编写

在我进一步解释之前,这里是代码。本部分对每种产品进行批准(因为一次批准的产品可能不止一种)。此部件工作正常:

            $approve_array = $db->implode_array($_REQUEST['approve']);
            foreach ($_REQUEST['approve'] as $value)
            {
                $cnt_details = $db->get_sql_row("SELECT product_id, active, approved, closed, deleted, list_in, category_id, addl_category_id FROM 
                    db_products WHERE product_id='" . intval($value) . "'");

                $mail_input_id = $cnt_details['auction_id'];
                include('notification_approved.php');               

            }
注意,它使用notification_approved.php,这是发送电子邮件的一段代码。通知_approved.php的内容如下:

<?

if ( !defined('INCLUDED') ) { die("Access Denied"); }

$keyword_search_string = 'teddybear';

$sql_select_products = $db->get_sql_row("SELECT kw.keyword, a.product_id, a.name AS item_name,  
    u.name AS user_name, u.username, u.email FROM db_keywords_watch kw
    INNER JOIN db_products a ON a.product_id='" . $mail_input_id . "'
    INNER JOIN db_users u ON u.user_id=kw.user_id WHERE 
    MATCH (kw.keyword) AGAINST ('" . $keyword_search_string . "' IN BOOLEAN MODE)");

ob_start();
var_dump($row_details);
$data = ob_get_clean();
$fp = fopen("file.txt", "w");
fwrite($fp, $data);
fclose($fp);    

while ($row_details = $db->fetch_array($sql_select_products))
{
    $text_message = 'this is the text message';
    $html_message = 'this is the html message';         
    send_mail('receiver@email.com', 'Keyword Alert', $text_message, 'sender@email.com', $html_message, null, true);
}
?>
我还包括函数“fetch_array”以供参考,但我认为这不是问题所在,因为它在其他十几个地方使用时没有问题:

    function fetch_array ($query_result)
    {
            $result = @mysql_fetch_array($query_result);

            if ($this->sql_error($result))
            {
                    die ($this->display_error(MSG_ERROR_MYSQL_FETCH_ARRAY, $this->sql_error($result)));
            }

            return $result;
    }
有人知道什么地方可能出错吗?我不知所措,为此已经花了好几个小时:(

send_mail()是您自己的函数还是您使用的php函数?我会暂时尝试使用mail(),因为它似乎是php的唯一基本电子邮件函数。测试:

mail('receiver@email.com', 'Keyword Alert', $text_message);

如果可以的话,您可以构建额外的标题并将其添加到mail()函数ala

您确定send\u mail()函数实际工作了吗?您是否尝试过在while()中执行类似于
var\u dump($row\u details)
的操作循环看看会发生什么?只是尝试了一下,将var_dump写入文件实际上…它什么都没有写入。这是奇怪的部分…它在工作时几乎像什么都没有,而在它之前,它工作得很好。用“var_dump”更新了我的原始帖子。所以db呼叫工作正常,所以开始调试邮件系统。确保它工作正常,确保电子邮件实际发出,确保电子邮件没有被当作垃圾邮件丢弃。诸如此类。这些都是你必须检查的事情。是的,这样做了。我在类似的通知中使用相同的电子邮件功能,没有问题。唯一的区别是其他通知不使用“while”循环。似乎“while”中的任何内容都不起作用。我甚至尝试在“while”中只写“hello world”循环,甚至不起作用。是的,这是一个函数,但它工作正常。我有其他通知,但是没有while循环,这些通知与send_mail一起工作正常。我对此非常关注。它似乎在while之前就正确地获取了数组。只有在while之后问题才出现在你的while循环中,如果你注释掉你的邮件功能并添加print_r($row_details);,你会得到什么?实际上,什么都没有。
mail('receiver@email.com', 'Keyword Alert', $text_message);