Php 编辑mysql数据库表中预先存在的数据

Php 编辑mysql数据库表中预先存在的数据,php,mysql,server-side,Php,Mysql,Server Side,我在编辑数据并将其存储在数据库中时遇到问题。我有一个表单,它从patients_details表加载数据,并显示在页面上的html表中。我这样做是为了让数据库的每个字段都有文本框,这样用户就可以选择更改数据,然后单击按钮将数据发送到数据库,然后重新显示页面。我的问题在于,当我单击按钮时,记录不会保存到数据库中,因此不会显示在表中。我花了几个小时研究这个问题,似乎不明白为什么它不起作用。我设法将信息添加到一个单独的表格中,然后将数据显示在页面上,但编辑时会有所不同。我想我的数据库可能有问题,但我不

我在编辑数据并将其存储在数据库中时遇到问题。我有一个表单,它从patients_details表加载数据,并显示在页面上的html表中。我这样做是为了让数据库的每个字段都有文本框,这样用户就可以选择更改数据,然后单击按钮将数据发送到数据库,然后重新显示页面。我的问题在于,当我单击按钮时,记录不会保存到数据库中,因此不会显示在表中。我花了几个小时研究这个问题,似乎不明白为什么它不起作用。我设法将信息添加到一个单独的表格中,然后将数据显示在页面上,但编辑时会有所不同。我想我的数据库可能有问题,但我不太确定

这是我的密码:

****updateUsers.php*****

 <html>
    <head>
        <title>Current Patients</title>

        <head>
            <meta charset='utf-8' />
            <link href='../fullcalendar.css' rel='stylesheet' />
            <link href='../fullcalendar.print.css' rel='stylesheet'   media='print' />
            <script src='../lib/moment.min.js'></script>
            <script src='../lib/jquery.min.js'></script>
            <script src='../lib/jquery-ui.custom.min.js'></script>
            <script src='../fullcalendar.min.js'></script>
        </head>

<body>
<?php

$con = mysql_connect('localhost', 'root', 'password');
if (!$con) {
    die("Cannot connect" . mysql_error());
}
mysql_select_db('DoctorScheduler');


if (isset($_POST['submit']) && $_POST['submit'] == 'updatePatients') {
    $updatePatientsDetailsQuery = "UPDATE patients_details SET     patient_id='$_POST[patient_id]', patient_surname='$_POST[patient_surname]', patient_forename='$_POST[patient_forename]', patient_dob='$_POST[patient_dob]', patient_doctor='$_POST[patient_doctor]', phone_num='$_POST[patient_number]', patient_email='$_POST[patient_email]', patient_address='$_POST[patient_address]' WHERE patient_id='$_POST[hidden] ' ";
    $patientRecords =mysql_query($updatePatientsDetailsQuery);

}

$sql = "SELECT * FROM patients_details";
$records=mysql_query($sql);


   // <a href="form1.php"> Request an Appointment </a>
   echo "<table border=1>";
    echo "<tr>";
     echo "<th>ID</th>";
     echo "<th>Surname</th>";
     echo "<th>Forename</th>";
     echo "<th>Date of Birth</th>";
     echo "<th>Doctor</th>";
     echo "<th>Phone Number</th>";
     echo "<th>Email</th>";
     echo "<th>Address</th>";
    echo "</tr>";

                while($currentPatients = mysql_fetch_assoc($records) ) {
                    echo "<form action=updateUsers.php method=post>";
                    echo "<tr>";
                        echo "<td>" . "<input type=hidden name=patient_id value=" . $currentPatients['patient_id'] . " </td>";
                        echo "<td>" . "<input type=text name=patient_surname value=" . $currentPatients['patient_surname']." </td>";
                        echo "<td>" . "<input type=text name=patient_forename value=" .  $currentPatients['patient_forename'] . " </td>";
                        echo "<td>".  "<input type=text name=patient_dob value=" .  $currentPatients['patient_dob'] . " </td>";
                        echo "<td>".  "<input type=text name=patient_doctor value=" .  $currentPatients['patient_doctor'] . " </td>";
                        echo "<td>".  "<input type=text name=patient_num value=" .  $currentPatients['patient_num'] . " </td>";
                        echo "<td>".  "<input type=text name=patient_email value=" .  $currentPatients['patient_email'] . " </td>";
                        echo "<td>".  "<input type=text name=patient_address value=" .  $currentPatients['patient_address'] . " </td>";
                        echo "<td>" . "<input type='submit' name='updatePatients' value='Update Patients' onclick='updateDatabase()'" . " </td>";
                    echo "</tr>";
                    echo "</form>";
                } // end of while

    echo "</table>";
?>




    <script>
        function updateDatabase() {
            var xmlhttp;

            xmlhttp=new XMLHttpRequest();
            xmlhttp.open("GET", "updateData.php?patient_surname=" + document.getElementById("patient_surname").value +
             "&patient_forename="+document.getElementById("patient_forename").value + "&patient_dob="+document.getElementById("patient_dob").value + 
             "&patient_doctor="+document.getElementById("patient_doctor").value + "&patient_num="+document.getElementById("patient_num").value + 
             "&patient_email="+document.getElementById("patient_email").value + "&patient_address="+document.getElementById("patient_address").value,false);
            xmlhttp.send(null);
        }
    </script>

</body>
**updateUsers.php*****
当前患者

所有这些表达方式如下:

 ... "UPDATE patients_details SET patient_id='$_POST[patient_id]' ....
将导致n“未知变量患者id”和类似错误。应该是:

 ... "UPDATE patients_details SET patient_id='" . $_POST['patient_id'] . "' ....
只要
patient\u id
未定义为常量(我假设不是常量),那么[patient\u id]
后的表达式是错误的

它必须是
$\u POST['patient\u id']
(请注意引号),否则会丢失转义引号,请改用字符串连接符

编辑

如果发出SQL语句,如
insert into patients\u details values(“?
),但未给出字段名,则该表中的所有列都必须有一个值,并且这些值必须按照这些列的定义顺序给出。否则,请使用以下语法:

      insert into patients_details (field1, field2) values ('one', 'two');

我的朋友,不要使用<代码> MySqLy函数,它们在PHP 7中被删除并被删除。它们是低效的并且有很多漏洞。请考虑将它们更改为<代码> MySqLII< <代码> >,或者更好地<代码> PDO/Cord>对象。另外一件事,你可以避免,在你的查询中插入直接<代码> $POST < /C>变量。它是危险的。恶意SQL代码可以通过用户输入注入,破坏您的数据库架构。只是粗略地看一眼,但您应该有更新,而不是插入。我检查了所有内容,什么都不起作用!我甚至尝试更改我的更新查询,如下所述。我已经做了10个小时,但一无所获:(服务器日志中有哪些错误?浏览器上的输出是什么?
      insert into patients_details (field1, field2) values ('one', 'two');