单击按钮时如何只更新1行而不是所有行

时间:2019-03-09 16:04:11

标签: php mysql

我有一个包含多行的表。每行后面都有一个按钮,您可以单击以将数据库中的一列(baatinn)从0更新为1。但是,当您单击该按钮时,它将把所有行从0更新为1,而不是您要单击的按钮上的行。 。我如何做到这一点,所以它只会更新您单击的行

数据库图片:

Database

HTML:

<tr>
    <th>Båt ut</th>
    <th>Båt inn</th>
    <th>Båtnr</th>
    <th>Fornavn</th>
    <th>Etternavn</th>
    <th>Tid</th>
    <th>Kr</th>
    <th>Edit</th>
  </tr>

PHP:

$sql = "SELECT utleid, inntid, baatnr, fornavn, etternavn, tid, kr, baatinn     FROM utleie WHERE baatnr LIKE '%$sok%' or fornavn LIKE '%$sok%' or etternavn     LIKE '%$sok%' or tid LIKE '%$sok%' ORDER BY id desc";
$result = $conn-> query($sql);

if ($result-> num_rows > 0) {
    while ($row = $result-> fetch_assoc()) {
        ?>
        <tr>
            <td><?php echo $row["utleid"]; ?></td>
            <td><?php echo $row["inntid"]; ?></td>
            <td><?php echo $row["baatnr"]; ?></td>
            <td><?php echo $row["fornavn"]; ?></td>
            <td><?php echo $row["etternavn"]; ?></td>
            <td><?php echo $row["tid"]; ?></td>
            <td><?php echo $row["kr"]; ?></td>
            <td><form method="post" action="innlevering.php">
        <button name="edit" value="1">Edit</button>
</form></td>
        </tr>
        <?php 
    }
    echo "</table>";
} else {
    echo "0 results";
}
$conn-> close();

innlevering.php:

<?php
include_once 'dbconnect.php';

if ($_POST['edit']) {
   $conn->query("UPDATE utleie SET baatinn=1");
}
?>

1 个答案:

答案 0 :(得分:1)

要解决注射问题,请进行参数设置。可能是这样(我使用PDO,所以您需要仔细检查):

/functions/getUtleie.php

Person ID | Distinct Co-Members
1           3
2           2
3           2

现在,当您要使用它时,请包含该函数,然后表单上的关键就是在一个隐藏字段中创建id:

function getUtleie($so, $conn)
{
    $query = $conn->prepare("SELECT utleid, inntid, baatnr, fornavn, etternavn, tid, kr, baatinn FROM utleie WHERE baatnr LIKE ? or fornavn LIKE ? or etternavn LIKE ? or tid LIKE ? ORDER BY id desc");
    $so = "%{$so}%";
    $query->bind_param('ssss',$so, $so, $so, $so);
    $result = $query->execute();
    if($result->num_rows == 0)
        return [];

    while($row = $result->fetch_assoc()) {
        $data[] = $row;
    }

    return $data;
}

提交表单后,您将要使用# Fetch the data $result = getUtleie($so, $conn); # If there are any results if(!empty($result)): ?> <table> <?php foreach($result as $row): ?> <tr> <td><?php echo $row["utleid"] ?></td> <td><?php echo $row["inntid"] ?></td> <td><?php echo $row["baatnr"] ?></td> <td><?php echo $row["fornavn"] ?></td> <td><?php echo $row["etternavn"] ?></td> <td><?php echo $row["tid"]; ?></td> <td><?php echo $row["kr"]; ?></td> <td> <form method="post" action="innlevering.php"> <input type="hidden" name="action" value="update_utleie" /> <input type="hidden" name="utleid" value="<?php echo $row["utleid"] ?>" /> <input type="text" name="val" /> <input type="submit" value="Edit" /> </form> </td> </tr> <?php endforeach ?> </table> <?php else: ?> 0 results <?php endif ?> 子句进行更新:

WHERE

无论如何,我没有检查过这些脚本,但是应该非常接近。至少应该将您指向正确的方向。