Оператор выбора SQL PHP сохраняет динамический многострочный результат в переменную и преобразует в строку для отправки по электронной почте - PullRequest
1 голос
/ 18 марта 2019

Мне нужно отправить сводку таблицы, выбранной в электронном письме.

/*
Table name: comments

username   comment             language      date
--------------------------------------------------------
Daniel     I am Daniel.        en            2019-05-01
Michael    I am Michael!       de            2019-05-04
Sean       I am Sean           en            2019-05-06
Sarah      I am Sarah.         it            2019-06-12

...and so on...
*/

Это в основном комментарии к разговору.Я хочу выбрать только те, которые имеют language = en, и суммировать их в переменной.

//db connection:
$conn = mysqli_connect("dbserver", "dbusername", "dbpassword", "dbname") or die("Connection failed: " . mysqli_connect_error());
$conn->query("SET NAMES 'utf8'");
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}  

//selecting:
$sql = "SELECT * FROM comments WHERE language='en' ORDER BY date ASC";
$rs_result = mysqli_query($conn, $sql);

Как мне перейти сюда, чтобы получить следующую переменную для содержимого электронной почты?

$email_content = '
<b>Daniel</b> 2019-05-01<br>
I am Daniel.
<br><br>
<b>Sean</b> 2019-05-06<br>
I am Sean
';

... который должен выглядеть в html-письме, например:

Даниэль 2019-05-01
Я Даниэль.

Шон 2019-05-06
Я Шон

Я знаю, как сделать передачу по электронной почте, поэтому мне нужна только переменная, заполненная результатами выбора и немного отформатированная с помощью html.

Ответы [ 4 ]

2 голосов
/ 18 марта 2019

попробуйте это решение

$email_content = '';
while($row = mysqli_query($conn, $sql))
{
    $email_content .= '<b>'.$row['username'].'</b> '.$row['date'].'<br> '.$row['comment'].'<br><br>';
}
1 голос
/ 18 марта 2019

Попробуйте это:

while ($row = mysqli_fetch_assoc($rs_result))
{
  $email_content .= '<b>'.$row['username'].'</b>'.$row['date'].'<br>'.$row['comment'].'<br><br>';
}
1 голос
/ 18 марта 2019

Перебрать результаты и назначить переменную.

$email_content  = "";
while($row = mysqli_fetch_assoc($rs_result)) {

       $email_content .= '
                <b>'.$row['username'].'</b>'.$row['date'].'<br>'.
                $row['comment'].'
                <br><br>';
    }
0 голосов
/ 18 марта 2019

Это должно сработать, хотя я не выполнил точный HTML-код, который вы указали

$email_content  = "";
while ($row = $rs_result->fetch_assoc()) {
    $email_content .= "<p>";
    $email_content .= "<b>" .  htmlspecialchars($row['username'])  ."</b>";
    $email_content .= "<span>" .  htmlspecialchars($row['date'])  ."</span>";
    $email_content .= "<p>" .  htmlspecialchars($row['comment'])  ."</p>";
    $email_content .= "</p>\n";
}

Я использовал htmlspecialchars для предотвращения внедрения HTML

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...