PHP到MySQL数据检索

时间:2019-05-03 12:58:30

标签: php mysql

我正在尝试从具有4行的mysql数据库中检索数据。我需要使用php将其作为表格发送到电子邮件中。我为此构建了一个脚本,但是问题是该脚本不是通过电子邮件发送所有行,而是通过电子邮件发送最后一行,或者如果我在数据库查询中使用“ where”传递了特定参数。

感谢任何人的帮助。预先谢谢你。

还附带了db输出和php代码。

<?php

date_default_timezone_set('America/Los_Angeles');
$today = date("j-F-Y g:i:s a");                 // March 10, 2001, 5:16 pm


// DB Connect.
$db_host = 'localhost'; // Server Name
$db_user = 'root'; // Username
$db_pass = 'test123#'; // Password
$db_name = 'util'; // Database Name

 $conn = mysqli_connect($db_host, $db_user, $db_pass, $db_name);
        if (!$conn) {
                die ('Failed to connect to MySQL: ' . mysqli_connect_error());
        }

        $sql = "select * from srvr1";
        $result = mysqli_query($conn, $sql);

        if (!$result) {
                die ('SQL Error: ' . mysqli_error($conn));
        }

        if(mysqli_num_rows($result) > 0){
                            while($row = mysqli_fetch_array($result)){
                                $File_system = $row[0];
                                $IP = $row[1];
                                $Capacity = $row[2];
                                $Available = $row[3];
                                $Used = $row[4];
                                $Percentage = $row[5];

                # Compare Percentage and alert.
                $subject = "Critical | FH NetApp-NetBackup Space Utilization..!";
                    $message1 = "
                    <html>
                        <body>
                            <p> Hi Team,<br><br>  The Server utilization is <b style='color:red'> critical</b>. Please find the below utilization details.</p>

                                                        <table>
                                <tr>
                                        <th> File_System </th>
                                        <th> IP </th>
                                        <th> Total_capacity </th>
                                        <th> Available_Capacity </th>
                                        <th> Used_Capacity </th>
                                        <th> Percentage </th>
                                </tr>
                                <tr>
                                        <td> $File_system </td>
                                        <td> $IP </td>
                                        <td> $Capacity </td>
                                        <td> $Available </td>
                                        <td> $Used </td>
                                        <td> $Percentage </td>
                                </tr>
                            </table>

                            <p style='font-size:15px'> Data generated at:<b> $today EST.</b><p>
                            <p>Regards, <br>
                               Backup Team. </p>
                        </body>
                </html>";
                    $headers[] = 'From: Srvr19utilization@util.com'; // Sender's Email
                    $headers[] = 'Cc: santosh.kowshik20@gmail.com'; // Carbon copy to Sender
                    $headers[] = 'MIME-Version: 1.0 charset=".$encoding."';
                    $headers[] = 'Content-type: text/html; charset=iso-8859-1';
                    // Message lines should not exceed 70 characters (PHP rule), so wrap it
                    $message = wordwrap($message1, 70);

                    // Send Mail By PHP Mail Function
                    mail($to, $subject, $message, implode("\r\n", $headers));
        }
}
?>

enter image description here

我一直在尝试在代码中循环,这无济于事。

3 个答案:

答案 0 :(得分:1)

尝试重新整理一下代码。首先创建html的“顶部”,然后遍历所有结果并将其附加到html,然后完成html。

我还没有测试下面的代码,但是它应该可以工作:-)

<?php

date_default_timezone_set('America/Los_Angeles');
$today = date("j-F-Y g:i:s a"); // March 10, 2001, 5:16 pm


// DB Connect.
$db_host = 'localhost'; // Server Name
$db_user = 'root'; // Username
$db_pass = 'test123#'; // Password
$db_name = 'util'; // Database Name

$conn = mysqli_connect($db_host, $db_user, $db_pass, $db_name);
if (!$conn) {
    die('Failed to connect to MySQL: ' . mysqli_connect_error());
}

$sql    = "select * from srvr1";
$result = mysqli_query($conn, $sql);

if (!$result) {
    die('SQL Error: ' . mysqli_error($conn));
}

if (mysqli_num_rows($result) > 0) {
    $subject = "Critical | FH NetApp-NetBackup Space Utilization..!";
    $message1 = "
          <html>
              <body>
                  <p> Hi Team,<br><br>  The Server utilization is <b style='color:red'> critical</b>. Please find the below utilization details.</p>

                                              <table>
                      <tr>
                              <th> File_System </th>
                              <th> IP </th>
                              <th> Total_capacity </th>
                              <th> Available_Capacity </th>
                              <th> Used_Capacity </th>
                              <th> Percentage </th>
                      </tr>";
    while ($row = mysqli_fetch_array($result)) {
        $File_system = $row[0];
        $IP          = $row[1];
        $Capacity    = $row[2];
        $Available   = $row[3];
        $Used        = $row[4];
        $Percentage  = $row[5];

        # Compare Percentage and alert.
        $message1 .= "
                                <tr>
                                        <td> $File_system </td>
                                        <td> $IP </td>
                                        <td> $Capacity </td>
                                        <td> $Available </td>
                                        <td> $Used </td>
                                        <td> $Percentage </td>
                                </tr>";
    }
    $message1 .= "</table>";
    $message1 .= "<p style='font-size:15px'> Data generated at:<b> $today EST.</b><p>
                                <p>Regards, <br>
                                   Backup Team. </p>
                            </body>
                    </html>";

    $headers[] = 'From: Srvr19utilization@util.com'; // Sender's Email
    $headers[] = 'Cc: santosh.kowshik20@gmail.com'; // Carbon copy to Sender
    $headers[] = 'MIME-Version: 1.0 charset=".$encoding."';
    $headers[] = 'Content-type: text/html; charset=iso-8859-1';
    // Message lines should not exceed 70 characters (PHP rule), so wrap it
    $message   = wordwrap($message1, 70);

    // Send Mail By PHP Mail Function
    mail($to, $subject, $message, implode("\r\n", $headers));

}
?>

关于条件格式

不用担心。您可以尝试使用嵌套的三元(if / else的简写:-))

上述代码的示例片段:

...
$Percentage  = $row[5];
$color = ($Percentage > 90) ? '#FCE901' : (($Percentage > 85) ? '#FF0000' : '#00E526');
# Compare Percentage and alert.
$message1 .= "
                        <tr>
                                <td> $File_system </td>
                                <td> $IP </td>
                                <td> $Capacity </td>
                                <td> $Available </td>
                                <td> $Used </td>
                                <td style=\"background-color:$color\"> $Percentage </td>
                        </tr>";

答案 1 :(得分:0)

问题出在数据库端。根据您的var_dump输出:

object(mysqli_result)#2 (5) { ["current_field"]=> int(0) ["field_count"]=> int(6) ["lengths"]=> NULL ["num_rows"]=> int(1) ["type"]=> int(0) } 

您仅返回1个结果。您应该从这里开始。也许您未引用自己认为的表。谁知道,但您php看起来不错。调查您的数据库

答案 2 :(得分:0)

您的PHP不好,您给了答案

<?php

date_default_timezone_set('America/Los_Angeles');
$today = date("j-F-Y g:i:s a");                 // March 10, 2001, 5:16 pm


// DB Connect.
$db_host = 'localhost'; // Server Name
$db_user = 'root'; // Username
$db_pass = 'test123#'; // Password
$db_name = 'util'; // Database Name

$conn = mysqli_connect($db_host, $db_user, $db_pass, $db_name);
if (!$conn) 
{
    die ('Failed to connect to MySQL: ' . mysqli_connect_error());
}

$sql = "select * from srvr1";
$result = mysqli_query($conn, $sql);

if (!$result) 
{
    die ('SQL Error: ' . mysqli_error($conn));
}

if(mysqli_num_rows($result) > 0)
{
    while($row = mysqli_fetch_array($result))
    {
        $File_system = $row[0];
        $IP = $row[1];
        $Capacity = $row[2];
        $Available = $row[3];
        $Used = $row[4];
        $Percentage = $row[5];

以上您有1行数据的百分比 在下面,您可以使用它来确定电子邮件主题-每封电子邮件仅1个主题-因此每封电子邮件1行数据


        # Compare Percentage and alert.
        if($Percentage > 90)
        {
            $subject = "Critical | FH NetApp-NetBackup Space Utilization..!";
            $message1 = "
                <html>
                    <head>
                        <style>
                            body,h6 {
                                font-family: Segoe UI,Helvetica,courier;
                            }
                            th {
                                border: 1px solid black;
                                border-collapse: collapse;
                                background-color: #04D1E8;
                                padding: 10px;
                                text-align: center;
                            }
                            td {
                                border: 1px solid black;
                                border-collapse: collapse;
                                padding: 10px;
                                text-align: center;
                            }
                            .cri {
                                background-color: #FF0000;
                            }
                        </style>
                    </head>

                    <body>
                        <p> Hi Team,<br><br>  The Server utilization is <b style='color:red'> critical</b>. Please find the below utilization details.</p>
                        <table>
                            <tr>
                                <th> File_System </th>
                                <th> IP </th>
                                <th> Total_capacity </th>
                                <th> Available_Capacity </th>
                                <th> Used_Capacity </th>
                                <th> Percentage </th>
                            </tr>
                            <tr>
                                <td> $File_system </td>
                                <td> $IP </td>
                                <td> $Capacity </td>
                                <td> $Available </td>
                                <td> $Used </td>
                                <td class='cri'> $Percentage </td>
                            </tr>
                        </table>

                        <p style='font-size:15px'> Data generated at:<b> $today EST.</b><p>
                        <p>
                            Regards, <br>
                            Backup Team. 
                        </p>
                    </body>
                </html>
            ";

            $headers[] = 'From: Srvr19utilization@util.com'; // Sender's Email
            $headers[] = 'Cc: santosh.kowshik20@gmail.com'; // Carbon copy to Sender
            $headers[] = 'MIME-Version: 1.0 charset=".$encoding."';
            $headers[] = 'Content-type: text/html; charset=iso-8859-1';
            // Message lines should not exceed 70 characters (PHP rule), so wrap it
            $message = wordwrap($message1, 70);

            // Send Mail By PHP Mail Function
            mail($to, $subject, $message, implode("\r\n", $headers));
        } 
        else if($Percentage > 85)
        {
            $subject = "Warning | FH NetApp-NetBackup Space Utilization..!";
            $message1 = "
                <html>
                    <head>
                        <style>
                            body,h6{
                                font-family: Segoe UI,Helvetica,courier;
                            }
                            th {
                                border: 1px solid black;
                                border-collapse: collapse;
                                background-color: #04D1E8;
                                padding: 10px;
                                text-align: center;
                            }
                            td {
                                border: 1px solid black;
                                border-collapse: collapse;
                                padding: 10px;
                                text-align: center;
                            }
                            .war {
                                background-color: #FCE901;
                            }
                        </style>
                    </head>

                    <body>
                        <p> Hi Team,<br><br>  The Server utilization is <b style='color:yellow'> above normal</b>. Please find the below utilization details.</p>
                        <table>
                            <tr>
                                <th> File_System </th>
                                <th> IP </th>
                                <th> Total_capacity </th>
                                <th> Available_Capacity </th>
                                <th> Used_Capacity </th>
                                <th> Percentage </th>
                            </tr>
                            <tr>
                                <td> $File_system </td>
                                <td> $IP </td>
                                <td> $Capacity </td>
                                <td> $Available </td>
                                <td> $Used </td>
                                <td class='war'> $Percentage </td>
                            </tr>
                        </table>
                        <p style='font-size:15px'> Data generated at:<b> $today EST.</b></p>
                        <p>
                            Regards, <br>
                            Backup Team. 
                        </p>
                    </body>
                </html>
            ";

            $headers[] = 'From: Srvr19utilization@util.com'; // Sender's Email
            $headers[] = 'Cc: santosh.kowshik20@gmail.com'; // Carbon copy to Sender
            $headers[] = 'MIME-Version: 1.0 charset=".$encoding."';
            $headers[] = 'Content-type: text/html; charset=iso-8859-1';
            // Message lines should not exceed 70 characters (PHP rule), so wrap it
            $message = wordwrap($message1, 70);

            // Send Mail By PHP Mail Function
            mail($to, $subject, $message, implode("\r\n", $headers));
        } 
        else 
        {
            $subject = "Normal | FH NetApp-NetBackup Space Utilization..!";
            $message1 = "
                <html>
                    <head>
                        <style>
                            body,h6{
                                font-family: Segoe UI,Helvetica,courier;
                            }
                            th {
                                border: 1px solid black;
                                border-collapse: collapse;
                                background-color: #04D1E8;
                                padding: 10px;
                                text-align: center;
                            }
                            td {
                                border: 1px solid black;
                                border-collapse: collapse;
                                padding: 10px;
                                text-align: center;
                            }
                            .nor {
                                background-color: #00E526;
                            }
                        </style>
                    </head>

                    <body>
                        <p> Hi Team,<br><br> The Server utilization is <b style='color:green'> normal. </b>Please find the below utilization details.</p>
                        <table>
                            <tr>
                                <th> File_System </th>
                                <th> IP </th>
                                <th> Total_capacity </th>
                                <th> Available_Capacity </th>
                                <th> Used_Capacity </th>
                                <th> Percentage </th>
                            </tr>
                            <tr>
                                <td> $File_system </td>
                                <td> $IP </td>
                                <td> $Capacity </td>
                                <td> $Available </td>
                                <td> $Used </td>
                                <td class='nor'> $Percentage </td>
                            </tr>
                        </table>

                        <p style='font-size:15px'> Data generated at:<b> $today EST.</b></p>
                        <p>
                            Regards, <br>
                            Backup Team. 
                        </p>
                    </body>
                </html>
            ";
            $headers[] = 'From: Srvr19utilization@util.com'; // Sender's Email
            $headers[] = 'Cc: santosh.kowshik20@gmail.com'; // Carbon copy to Sender
            $headers[] = 'MIME-Version: 1.0 charset=".$encoding."';
            $headers[] = 'Content-type: text/html; charset=iso-8859-1';

            // Message lines should not exceed 70 characters (PHP rule), so wrap it
            $message = wordwrap($message1, 70);

            // Send Mail By PHP Mail Function
            mail($to, $subject, $message, implode("\r\n", $headers));
        }
    }
}
?>