【问题标题】:How do I update each row individually?如何单独更新每一行?
【发布时间】:2015-11-10 15:17:59
【问题描述】:

所以我几天来一直在尝试弄清楚如何分别更新每一行,但我无法弄清楚。这是我第一次使用php,对于丑陋的代码感到抱歉。

我似乎可以从每一行中提取信息,但更新不起作用,但是它会发送地址栏中所有行的所有数据

<html>
<head>
    <title>EDIT Patient data</title>
</head>
<body> 
    <br>
    <a href="Patients.php">Edit Patients</a><br>
    <a href="PatientRequest.php">Patient Request</a><br>
    <a href="PatientConfirmed.php">Booked Patients</a>
    <?php
        include 'connect.php';
        $sql = "SELECT * FROM patients;";
        $result = mysql_query($sql);
        $num_of_row = mysql_num_rows($result);

        if (isset($_GET['submit'])) {
            $id = $_GET['did'];
            $fname = $_GET['dfname'];
            $lname = $_GET['dlname'];
            $email = $_GET['demail'];
            $phone = $_GET['dphone'];
            $address = $_GET['daddress'];
            $query = mysql_query("update patients set fName='$fname', lName='$lname', email='email', phone='$phone', address='$address' where patientID ='$id'");
        }

        echo "<table border=1>";
        echo " <tr> <td> Patient ID </td>  ";
        echo "<td> First name </td>";
        echo "<td> last name </td>";
        echo "<td> email </td>";
        echo "<td> phone number</td>";
        echo "<td> address </td>";
        echo "<td> date of birth </td> ";
        echo "<td> update </td></tr>";

        while($row = mysql_fetch_assoc($result))
        {
            echo  "<tr> <form class='form' method='get'>";
            echo  "<td> <input type='text' name='did' value='".$row['patientID']."' readonly /></td>";
            echo  "<td> <input type='text' name='dfname' value ='".$row['fName']."' /></td>";
            echo  "<td> <input type='text' name='dlname' value = '".$row['lName']."' /></td>";
            echo  "<td> <input type='text' name='demail' value = '".$row['email']."' /></td>";
            echo  "<td> <input type='text' name='dphone' value ='".$row['phone']."' /></td>";
            echo  "<td> <input type='text' name='daddress' value ='".$row['address']."' /></td>";
            echo  "<td> <input type='text' name='ddob'  value ='".$row['dob']."' readonly /></td>"; 
            echo  "<td>  <input class='submit' type='submit' name='submit' value='update' /> </td> </tr>";
        }    

    ?>
</body>
</html>

【问题讨论】:

  • 不要使用mysql_*,而是使用mysqli_*或PDO,因为mysql_*已被弃用,在PHP 7中它将被删除。
  • 首先,对这些类型的表单提交使用 $_POST 而不是 $_GET。将$_GET 替换为$_POST 并将method='get' 更改为method='post'
  • 好的,所以我已经改变了它,但它仍然没有更新,就像我说我在这方面有点菜鸟,所以如果它是简单的,我很抱歉

标签: php html mysql sql forms


【解决方案1】:

您的用户有更新权限吗?

如果不是你需要使用GRANT UPDATE ON *.* TO 'User'@'Host';

但您应该使用 MySQLi,因为 MySQL 已被弃用。您还应该研究参数化查询和 MySQL 注入,值得了解!

【讨论】:

  • 在 MySQL shell 中还是在 phpmyadmin 中?你用的是哪一个?
【解决方案2】:

如果您想更新单个行,则必须在您的 while 循环周围放置一个 &lt;form&gt;,如下所示:

echo "<form action='' method='GET'>";
while ($row = mysql_fetch_assoc($result)) {
      echo  "<tr> <form class='form' method='get'>";
      echo  "<td> <input type='text' name='did' value='".$row['patientID']."' readonly /></td>";
      echo  "<td> <input type='text' name='dfname' value ='".$row['fName']."' /></td>";
      echo  "<td> <input type='text' name='dlname' value = '".$row['lName']."' /></td>";
      echo  "<td> <input type='text' name='demail' value = '".$row['email']."' /></td>";
      echo  "<td> <input type='text' name='dphone' value = '".$row['phone']."' /></td>";
      echo  "<td> <input type='text' name='daddress' value ='".$row['address']."' /></td>";
      echo  "<td> <input type='text' name='ddob'  value ='".$row['dob']."' readonly /></td>"; 
      echo  "<td>  <input class='submit' type='submit' name='submit' value='update' /> </td> </tr>";
}
echo "</form>";

表单将允许根据表单的方法(GET 和 POST)提交输入字段。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-09
    • 1970-01-01
    • 1970-01-01
    • 2013-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-16
    相关资源
    最近更新 更多