为什么我的查询只更新一个字段

时间:2014-12-29 12:43:03

标签: php mysql mysqli

查询中的行可以是一行或多行(最多100行),如果查询输出只有一行数据,则更新查询工作正常,但当输出有多行数据时,只有非常最后选择的行将被更新,我缺少什么?

某些背景:需要将员工从一个位置移动到另一个位置,插入查询将数据写入数据库,但将RECEIPT日期留空。许多员工可以从一个地方被释放到另一个地方......这种情况发生在另一种形式,并且运作良好。

现在收件人必须接受这些员工,更新查询在提交表单之后在后台运行,并且只需在$ move_receipt_date字段中输入今天的日期($ d)。但正如我之前提到的,只有最后一行在我的更新查询中生效...

以下是获取数据和更新查询的select查询,非常简单:

    <?php
    include("../../xxx.xxx");
        $cxn = mysqli_connect($host,$user,$password,$dbname)
            or die ("Couldn't connect to server.");
        $query = "SELECT `move_id`,`empl_no`,`empl_jc_code` AS old_jc_code,`new_jc_code`,`move_date`,`move_receipt_date`,`move_reason`
            FROM `empl_movement` 
            WHERE `new_jc_code` = '$empl_jc_code' AND `move_receipt_date` = 0";
        $result = mysqli_query($cxn,$query)
            or die ("Couldn't execute query. "
                .mysqli_error($cxn));

                echo "<table><br>
        <tr>
         <th>Move ID</th>
         <th>Employee No</th>
         <th>Old JC Code</th>
         <th>New JC Code</th>
         <th>Release Date</th>
         <th>Receipt Date</th>
         <th>Reason for Move</th>
        </tr>";
        while($row = mysqli_fetch_assoc($result))
        {
            extract($row);
            echo "<tr>\n
                <td>$move_id</td>\n
                <td>$empl_idno</td>\n
                <td>$old_jc_code</td>\n
                <td>$new_jc_code</td>\n
                <td>$move_date</td>\n
                <td>$move_receipt_date</td>\n  //this is the field that will be updated
                <td>$move_reason</td>\n
                </tr>\n";
        }
        echo "</table><br>";        ?>

    <?php
    include("../../xxx.xxx");
        $cxn = mysqli_connect($host,$user,$password,$dbname)
            or die ("Couldn't connect to server.");
        $query = "UPDATE `empl_movement` SET `move_receipt_date` = '$d' 
                    WHERE `move_id` = '$move_id'";
        $result = mysqli_query($cxn,$query)
            or die ("Couldn't execute query. "
                .mysqli_error($cxn));
    ?>

1 个答案:

答案 0 :(得分:0)

因为在您的查询中,您只更新了一个字段,即empl_movement。