Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mysql更新正在更新所有行,而不是一行_Php_Forms_Mysqli - Fatal编程技术网

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

Php mysql更新正在更新所有行,而不是一行,php,forms,mysqli,Php,Forms,Mysqli,我有一个问题,我似乎无法找出什么是错的。我知道SQL注入,但考虑到用户,我并不担心 好的,所以我的问题是当我更新。如果我把$update=“update robert SET req='$reqs'放在id='$x'它什么也不做,如果我把$update=“update robert SET req='$reqs'它更新整个列,这不是我想要的。 以下是完整的代码: <?php $i = 0; $x = 0;

我有一个问题,我似乎无法找出什么是错的。我知道SQL注入,但考虑到用户,我并不担心

好的,所以我的问题是当我更新。如果我把
$update=“update robert SET req='$reqs'放在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);

                            }

查询应如下所示:

$update = "UPDATE robert SET req='$reqs' WHERE id='{$row['id']}'";

$X是一个在每次迭代中递增的数字,id可以不同于$X

MySQL无法看到您的PHP代码,更不用说运行它了。计算的是实际生成的SQL代码。
if
语句在while循环之外,因此
$i
$x
始终比表中的行数多1。这似乎是个问题。我已经把它移到了递增变量上方的while循环中,这是有道理的,但它仍然不起作用。太棒了,谢谢你,先生<代码>如果(isset($\u POST['submit'.$i.']){$reqs=$\u POST['req'.$i];$id=$\u POST['id'.$i];$update=“update robert SET req='$reqs'其中id='$id'”;$qry=mysqli_查询($conn,$update);}$i++;$x++
并且您可以直接使用$row['id']而不是$\u POST['id'.$i];更少的代码。非常感谢你。