PHP数据库更新功能只修改了第一行?

PHP数据库更新功能只修改了第一行?,php,mysql,database,Php,Mysql,Database,editcrew.php handlecrewedit.php 这是我修改条目的另一个问题。我不太确定我是否可以简单地复制和粘贴我的删除代码来编辑代码,但这里是我的表的一些粗略估计。与删除功能不同,通过选择编辑功能,它将用户引导到表单页面,并要求他们填写更新的数据。错误 缺少结束标记?>此处将editcrew.php和handlecrewedit.php文件代码替换为以下代码 editcrew.php handlecrewedit.php 我认为建议的答案遗漏了一点。 它只更新第一行,因为您使用

editcrew.php

handlecrewedit.php

这是我修改条目的另一个问题。我不太确定我是否可以简单地复制和粘贴我的删除代码来编辑代码,但这里是我的表的一些粗略估计。与删除功能不同,通过选择编辑功能,它将用户引导到表单页面,并要求他们填写更新的数据。

错误

缺少结束标记?>此处将editcrew.php和handlecrewedit.php文件代码替换为以下代码

editcrew.php

handlecrewedit.php


我认为建议的答案遗漏了一点。 它只更新第一行,因为您使用重定向头退出while循环

<?php
require 'dbfunction.php';
$con = getDbConnect();
$crew_id = $_POST["crew_id"];
$CrewName = $_POST["CrewName"];
$CrewRank = $_POST["CrewRank"];
$StartDate = $_POST["StartDate"];
$EndDate = $_POST["EndDate"];
$PayrollNo = $_POST["PayrollNo"];
$EmployeeNo = $_POST["EmployeeNo"];
$WatchKeeping = $_POST["WatchKeeping"];
$Active = $_POST["Active"];

if (!mysqli_connect_errno($con)) {
    $sqlQueryStr = "UPDATE crewlist SET crew_name = '$CrewName', crew_rank = '$CrewRank', start_date = '$StartDate' "
            . ", end_date = '$EndDate', payroll_no = '$PayrollNo'"
            . ", employee_no = '$EmployeeNo', watchkeeping = '$WatchKeeping', active = '$Active' WHERE crew_id = " . $crew_id . "";
    mysqli_query($con, $sqlQueryStr);
}
header('Location: crewlisting.php');
mysqli_close($con);
?>
将这两行放在while循环之外,它将更新每一行

您的while循环将比:

header('Location: crewlisting.php');
mysqli_close($con);

@Kausha Mehta在这里!对不起,我是新来的,没关系。我给出了解决方案,请查看。@KaushaMehta您好,我有一个关于搜索功能的新查询。我的主页显示所有用户的记录,如何使搜索文本框读取我键入的内容,例如,当我键入“J”时,记录自动刷新为以“J”开头的名称。提前谢谢。如果你在这里创建新的问题和链接会更好。无论你们在新问题中尝试了什么,我都会解释你们的代码,然后我就能解释了。@KaushaMehta我已经有了一个,但谢谢!我会有更多的疑问:很抱歉,我在这里传输时漏掉了它,我会编辑它。很抱歉,但是你能解释更多关于第四个错误的信息吗,因为我相对较新。谢谢你向我解释这些小细节!这有帮助!我会稍后再查看。我已经添加了if-!mysqli_connect_errno$con{$queryStr=SELECT crew_id.FROM crewlist;}$result=mysqli_query$con,$queryStr;-上面的代码,它可以工作,但它更新了整个表。否则就不行了,再次谢谢!我会稍后再试,然后再告诉你@陈俊浩好的,好的,一旦你添加了,请告诉我。嗨@Kausha Mehta,我试过了,但是你的代码不起作用。当我将下面的代码与您的代码合并时,它会更新整个表。只是为了澄清,它需要$queryStr=从crewlist中选择crew\u id才能工作。@陈俊浩不,这不是必需的,因为在editcrew.php中,我在hidden中使用crew\u id字段,所以我在handlecrewedit.php中得到了类似于$\u POST的字段。
<?php

require 'dbfunction.php';
$con = getDbConnect();
$crew_id = $_POST["crew_id"];
$CrewName = $_POST["CrewName"];
$CrewRank = $_POST["CrewRank"];
$StartDate = $_POST["StartDate"];
$EndDate = $_POST["EndDate"];
$PayrollNo = $_POST["PayrollNo"];
$EmployeeNo = $_POST["EmployeeNo"];
$WatchKeeping = $_POST["WatchKeeping"];
$Active = $_POST["Active"];


if (!mysqli_connect_errno($con)) {

$queryStr = "SELECT crew_id " .
        "FROM crewlist"; 
}
$result = mysqli_query($con, $queryStr);
while ($row = mysqli_fetch_array($result)) {        



if (!mysqli_connect_errno($con)) {
    $sqlQueryStr = "UPDATE crewlist SET crew_name = '$CrewName', crew_rank = '$CrewRank', start_date = '$StartDate' "
            . ", end_date = '$EndDate', payroll_no = '$PayrollNo'"
            . ", employee_no = '$EmployeeNo', watchkeeping = '$WatchKeeping', active = '$Active' WHERE crew_id = " . $row['crew_id'] . "";


    }
    mysqli_query($con, $sqlQueryStr);
    header('Location: crewlisting.php');
    mysqli_close($con);
}




mysqli_close($con);
?>
<table>
    <form action="handlecrewedit.php" method="post">
        <input type="hidden" name="crew_id" value="<?php echo $_GET['id']; ?>" />
        <tr>
            <td>Crew Name:</td>
            <td><input type="text" name="CrewName" id ="CrewName"required></td>     
        </tr>
        <tr>
            <td>Crew Rank:</td>
            <td><input type="text" name="CrewRank" id="CrewRank" required></td>     
        </tr>
        <tr>
            <td>Start Date:</td>
            <td><input type="text" name="StartDate" id="StartDate" required></td>       
        </tr>
        <tr>
            <td>End Date:</td>
            <td><input type="text" name="EndDate" id="EndDate" required></td>       
        </tr>
        <tr>
            <td>Payroll No:</td>
            <td><input type="text" name="PayrollNo" id="PayrollNo" required></td>       
        </tr>
        <tr>
            <td>Employee No:</td>
            <td><input type="text" name="EmployeeNo" id="EmployeeNo" required></td>     
        </tr>
        <tr>
            <td>Watching Keeping:</td>
            <td><input type="text" name="WatchKeeping" id="WatchKeeping" required></td>     
        </tr>
        <tr>
            <td>Active:</td>
            <td><input type="text" name="Active" id="Active" required></td>     
        </tr>
        <tr>
            <td><input type="submit" value="Submit" ></td>


        </tr>
    </form>
</table>
<?php
require 'dbfunction.php';
$con = getDbConnect();
$crew_id = $_POST["crew_id"];
$CrewName = $_POST["CrewName"];
$CrewRank = $_POST["CrewRank"];
$StartDate = $_POST["StartDate"];
$EndDate = $_POST["EndDate"];
$PayrollNo = $_POST["PayrollNo"];
$EmployeeNo = $_POST["EmployeeNo"];
$WatchKeeping = $_POST["WatchKeeping"];
$Active = $_POST["Active"];

if (!mysqli_connect_errno($con)) {
    $sqlQueryStr = "UPDATE crewlist SET crew_name = '$CrewName', crew_rank = '$CrewRank', start_date = '$StartDate' "
            . ", end_date = '$EndDate', payroll_no = '$PayrollNo'"
            . ", employee_no = '$EmployeeNo', watchkeeping = '$WatchKeeping', active = '$Active' WHERE crew_id = " . $crew_id . "";
    mysqli_query($con, $sqlQueryStr);
}
header('Location: crewlisting.php');
mysqli_close($con);
?>
header('Location: crewlisting.php');
mysqli_close($con);
while ($row = mysqli_fetch_array($result)) {        
    // not needed. if (!mysqli_connect_errno($con)) {
    $sqlQueryStr = "UPDATE crewlist SET crew_name = '$CrewName', crew_rank = '$CrewRank', start_date = '$StartDate' "
            . ", end_date = '$EndDate', payroll_no = '$PayrollNo'"
            . ", employee_no = '$EmployeeNo', watchkeeping = '$WatchKeeping', active = '$Active' WHERE crew_id = " . $row['crew_id'] . "";


    //} closing bracket of if, but the if is not needed.
    mysqli_query($con, $sqlQueryStr);

}
//after updating all rows, redirect
header('Location: crewlisting.php');
mysqli_close($con);