【问题标题】:Retrieving employee salaries with mysql and php using nymber_format使用 nymber_format 使用 mysql 和 php 检索员工工资
【发布时间】:2018-08-10 22:25:35
【问题描述】:

我正在使用 php 从 musql db 返回员工信息。我使用 number_format() 方法以格式化逗号返回工资,但是当返回数据时,所有员工的工资都相同。如何让php从employees表中返回个人工资?

PHP/MySQL

   <?php

    require_once("db.php");

    $sql = "SELECT `*` FROM `employees`";
    $results = mysqli_query($connect, $sql) or die(mysql_error());
    $row = mysqli_fetch_array($results, MYSQL_BOTH) or die(mysql_error());
    $salary = $row['salary']; 
    $rows_sal = number_format($salary); 

    echo("<table>");
    while($row = mysqli_fetch_array($results, MYSQL_BOTH))
    {
        echo("<tr>");
        echo "<td>" . $row['empid'] . '</td>' .
             "<td>" . $row['lastname'] . '</td>' .
             "<td>" . $row['firstname'] . '</td>' .
             "<td>" . $row['department'] . '</td>' .
             "<td>" . $row['position'] . '</td>' .
             "<td>" . $rows_sal . '</td>'; 


        echo '</br>';

        echo('</tr>');
    }


    echo("</table>");
    ?>

【问题讨论】:

    标签: php mysql localhost


    【解决方案1】:

    number_format 不适用于数组。这样做:

    <?php
    
        require_once("db.php");
    
        $sql = "SELECT `*` FROM `employees`";
        $results = mysqli_query($connect, $sql) or die(mysql_error());
        $row = mysqli_fetch_array($results, MYSQL_BOTH) or die(mysql_error());
        //$salary = $row['salary'];
        //$rows_sal = number_format($salary);
    
        echo("<table>");
        while($row = mysqli_fetch_array($results, MYSQL_BOTH))
        {
            echo("<tr>");
            echo "<td>" . $row['empid'] . '</td>' .
                 "<td>" . $row['lastname'] . '</td>' .
                 "<td>" . $row['firstname'] . '</td>' .
                 "<td>" . $row['department'] . '</td>' .
                 "<td>" . $row['position'] . '</td>' .
                 "<td>" . number_format($row['salary']) . '</td>';
    
    
            echo '</br>';
    
            echo('</tr>');
        }
    
    
        echo("</table>");
    ?>
    

    【讨论】:

    • ...他没有将函数应用于数组,而是应用于数组的一项(应用于第一行的“薪水”)。但是你的代码是对的!
    • Idk 否决了您的答案,但我绝对赞成。这里有些人是仇恨者。
    • @WCA 是的,我知道,但我不在乎投反对票,它帮助了你,将来可能会帮助一些人,这对我有好处。
    • ...是的,我的也投了反对票,我不知道为什么:(
    【解决方案2】:

    那是因为您在 foreach 循环之外使用薪水。 (顺便说一句,您将第一行从表格中删除)。

    在我建议你如何做之前,让我解释一下你的实际代码发生了什么:(跟随 cmets)

       <?php
    
        require_once("db.php");
    
        $sql = "SELECT `*` FROM `employees`";
        $results = mysqli_query($connect, $sql) or die(mysql_error());
    
        //here you're asking THE FIRST row:
        $row = mysqli_fetch_array($results, MYSQL_BOTH) or die(mysql_error()); 
        $salary = $row['salary']; 
        //so $rows_sal is the first salary. All this have nothing to do with the iteration below.
        $rows_sal = number_format($salary); 
    
        echo("<table>");
    
        //here you're asking for the next results (leaving 1st row outside the table!)
        while($row = mysqli_fetch_array($results, MYSQL_BOTH)) 
        {
            echo("<tr>");
            echo "<td>" . $row['empid'] . '</td>' .
                 "<td>" . $row['lastname'] . '</td>' .
                 "<td>" . $row['firstname'] . '</td>' .
                 "<td>" . $row['department'] . '</td>' .
                 "<td>" . $row['position'] . '</td>' .
    
                 //and here you're referencing the value set before the while.
                 "<td>" . $rows_sal . '</td>'; 
    
    
            echo '</br>';
    
            echo('</tr>');
        }
    
    
        echo("</table>");
        ?>
    

    现在这是你应该做的:(跟随 cmets)

       <?php
    
        require_once("db.php");
    
        $sql = "SELECT `*` FROM `employees`";
        $results = mysqli_query($connect, $sql) or die(mysql_error());
        //don't ask for results yet! 
    
        echo("<table>");
        while($row = mysqli_fetch_array($results, MYSQL_BOTH)) //including 1st row
        {
            //now $row is EACH row, NOW you can format your salary:
            $salary = $row['salary']; 
            $rows_sal = number_format($salary); 
            echo("<tr>");
            echo "<td>" . $row['empid'] . '</td>' .
                 "<td>" . $row['lastname'] . '</td>' .
                 "<td>" . $row['firstname'] . '</td>' .
                 "<td>" . $row['department'] . '</td>' .
                 "<td>" . $row['position'] . '</td>' .
                 "<td>" . $rows_sal . '</td>';
            echo '</br>';
            echo('</tr>');
        }
    
    
        echo("</table>");
        ?>
    

    希望对你有帮助。

    【讨论】:

    • Pablo Gonzalez,我明白了,我只能在 int 处于 while 循环并被输出时格式化它?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多