mysql 更新正在更新所有行而不是一行

问题描述 投票:0回答:1

我遇到了一个问题,我似乎无法弄清楚出了什么问题。我知道 SQL 注入,但考虑到用户,我并不担心。

好吧,我遇到的问题是更新的时候。如果我输入

$update = "UPDATE robert SET req='$reqs' WHERE id='$x'";
它什么也不做,如果我输入
$update = "UPDATE robert SET req='$reqs'";
它会更新整个列,这不是我想要的。 这是完整的代码:

<?php
                $i = 0;
                $x = 0;
                $sql = "SELECT * FROM robert";
                $result = mysqli_query($conn, $sql);

                while($row = mysqli_fetch_assoc($result)){
                    echo "<form action='rmcclanahan.php' method='post'>
                    <table><tr>";
                    echo "<td><input type='text' name='date".$i."' value='".$row['date']."' size='8'></td>";
                    echo "<td><input type='text' name='req".$i."' value='".$row['req']."' size='6'></td>";
                    echo "<td><input type='text' name='po".$i."' value='".$row['po']."' size='6'></td>";
                    echo "<td><input type='text' name='requestor".$i."' value='".$row['requestor']."' size='6'></td>";
                    echo "<td><input type='text' name='line".$i."' value='".$row['line']."' size='5'></td>";
                    echo "<td><input type='text' name='description".$i."' value='".$row['description']."' size='12'></td>";
                    echo "<td><input type='text' name='price".$i."' value='".$row['price']."' size='12'></td>";
                    echo "<td><input type='text' name='supplier".$i."' value='".$row['supplier']."' size='6'></td>";
                    echo "<td><input type='text' name='eleven".$i."' value='".$row['eleven']."' size='12'></td>";
                    echo "<td><input type='text' name='carcap".$i."' value='".$row['carcap']."' size='12'></td>";
                    echo "<td><input type='text' name='carnum".$i."' value='".$row['carnum']."' size='6'></td>";
                    echo "<td><input type='text' name='engineering".$i."' value='".$row['engineering']."' size='12'></td>";
                    echo "<td><input type='text' name='costcenter".$i."' value='".$row['costcenter']."' size='6'></td>";
                    echo "<td><input type='text' name='accnum".$i."' value='".$row['accnum']."' size='5'></td>";
                    echo "<td><input type='text' name='recieved".$i."' value='".$row['recieved']."' size='6'></td>";
                    echo "<td><input type='text' name='recdate".$i."' value='".$row['recdate']."' size='8'></td>";
                    echo "<td><button type='submit' name='submit".$i."'>Edit</button></td>";
                    echo "</tr></table>
                    </form>";


                    $i++;
                    $x++;

                    }
                    if(isset($_POST['submit'.$i.''])){
                            $reqs = $_POST['req'.$i.''];
                            $update = "UPDATE robert SET req='$reqs' WHERE id='$x'";
                            $qry = mysqli_query($conn, $update);

                            }
php forms mysqli
1个回答
1
投票

您必须在 WHERE 子句中提供实际的 id,而不是任意数字。

查询应该是这样的:

$update = "UPDATE robert SET req='$reqs' WHERE id=?";
$stmt = $conn->prepare($update);
$stmt->bind_param("ss", $reqs,$row['id']);
$stmt->execute();

另请注意,您必须使用准备好的语句以避免错误和注入。

© www.soinside.com 2019 - 2024. All rights reserved.