Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-如何向电子邮件正文添加变量_Php_Mysql_Email - Fatal编程技术网

PHP-如何向电子邮件正文添加变量

PHP-如何向电子邮件正文添加变量,php,mysql,email,Php,Mysql,Email,我有一个PHP脚本,可以从MySQL数据库导入数据,并通过while循环向上述人员发送电子邮件。除了我不能在电子邮件正文中使用变量值(而是打印出变量的名称)之外,一切正常。例如,如果我写“$first_name”,我希望电子邮件的正文显示“Johan”,如果这是数据库中条目的名称 if (isset($_POST['submit'])){ // About database $user = "user"; $password

我有一个PHP脚本,可以从MySQL数据库导入数据,并通过while循环向上述人员发送电子邮件。除了我不能在电子邮件正文中使用变量值(而是打印出变量的名称)之外,一切正常。例如,如果我写“$first_name”,我希望电子邮件的正文显示“Johan”,如果这是数据库中条目的名称

if (isset($_POST['submit'])){

        // About database
        $user       = "user";  
        $password   = "password";  
        $host       = "host";  
        $dbase  = "dbase";  
        $table  = "table";

        // Connection to database  
        $dbc= mysqli_connect($host,$user,$password, $dbase)  
        or die("Unable to select database"); 

        // Retrieve emails from database
        $country    = $_POST['country'];

        $query= "SELECT email, firstname FROM $table WHERE country = '$country'"; 
        $result= mysqli_query ($dbc, $query)  
        or die ('Error querying database.'); 

        // Send the email
        while ($row = mysqli_fetch_array($result)) { 

            // Write $first_name for recipients name
            $first_name = $row['firstname']; 
            $last_name  = $row['lastname']; 
            $email      = $row['email']; 

            // About the email
            $from       = 'info@email.com';
            $subject    = $_POST['heading']; 
            $body       = $_POST['message']; 
            $speed      = $_POST['speed'];

            mail($email, $subject, $body, 'From:' . $from); 
            echo 'Email sent to: ' . $email. '<br>'; 

            // Delay for speed regulation
            sleep(3600/$speed);
        } 

    }

mysqli_close($dbc); 
或在此:

$first_name = $row['firstname']; 
$last_name = $row['lastname']; 
$email     = $row['email']; 

在您的行中
$query=“从$table中选择email,firstname,其中country='$country'”
;您还必须添加lastname

在您的行中
$query=“从$table中选择email,firstname,其中country='$country'
;您还必须添加lastname

假设$\u POST['message']的内容看起来像

Dear $first_name,
Greetings, I am a prince from...
PHP不会替换这个变量。这只是它在内联字符串中所做的事情(当使用双引号时)

你可以用十几种不同的方法来处理这件事。。。例如,您可以:

$body = str_replace('$first_name', $first_name, $body);

注意单引号的使用。这是为了防止PHP使用$first\u name的值,而使用文字字符串“$first\u name”。

假设$\u POST['message']的内容类似于

Dear $first_name,
Greetings, I am a prince from...
PHP不会替换这个变量。这只是它在内联字符串中所做的事情(当使用双引号时)

你可以用十几种不同的方法来处理这件事。。。例如,您可以:

$body = str_replace('$first_name', $first_name, $body);

注意单引号的使用。这是为了防止PHP使用$first\u name的值,而使用文字字符串“$first\u name”。

$body=$\u POST['message']您正在用发布值的内容填充正文,而不是从数据库中获取的任何内容。如果您使用的是mysqli函数,那么出于安全目的,您也可以使用mysqli函数,而不是在查询中随意转储变量,这有点重要。我从一个网站发送电子邮件,在那里我把信息写在一个输入字段(正文)中。我希望能够在正文中写$first_name,并因此得到“John”。这是可能的吗?幸运的是,您的消息体没有被评估为php,因此如果您想在那里替换文本,您需要手动使用
stru replace()
。我建议创建一个定义的可替换标记列表,例如
{firstName}
{lastName}
,etc并使用jeroen上述函数将其替换为适当的值。
$body=$\u POST['message']您正在用发布值的内容填充正文,而不是从数据库中获取的任何内容。如果您使用的是mysqli函数,那么出于安全目的,您也可以使用mysqli函数,而不是在查询中随意转储变量,这有点重要。我从一个网站发送电子邮件,在那里我把信息写在一个输入字段(正文)中。我希望能够在正文中写$first_name,并因此得到“John”。这是可能的吗?幸运的是,您的消息体没有被评估为php,因此如果您想在那里替换文本,您需要手动使用
stru replace()
。我建议创建一个定义的可替换标记列表,例如
{firstName}
{lastName}
,等,并使用jeroen提到的函数将其替换为适当的值。“firstname”甚至还不起作用,只有“email”。问题一定在其他地方。“firstname”甚至不起作用,只有“email”。问题一定在其他地方。