使用php更新数据库时出现奇怪的错误

时间:2014-04-29 10:47:45

标签: php

我有一个奇怪的问题,如果我删除 Type doctor name <input type="text" name="new_Doctor_name" value="<?php echo $row1[3]; ?>" ><br /> 这一行,我就无法更新我的记录并收到通知 未定义的变量:row1 。但是,如果我保留这行,我从另一张表中复制,我可以更新。

请解释一下。任何帮助将受到高度赞赏。

<?php

include_once('Connect.php');
            if( isset($_GET['edit1']) )
            {
                $id = $_GET['edit1'];
                $res1= mysql_query("SELECT * FROM department WHERE Dept_name='$id'");
                $row1= mysql_fetch_array($res1);
            }

            if( isset($_POST['new_Doctor_name']) )
            {
                $id                 = $_POST['id'];
                $new_Dept_name      = $_POST['new_Dept_name'];
                $new_Ward           = $_POST['new_Ward'];
                $sql1                = "UPDATE department SET Dept_name='$new_Dept_name', Ward='$new_Ward' WHERE Dept_id='$id'";
                $res2                = mysql_query($sql1) or die("Could not Update".mysql_error());
                echo "<meta http-equiv='refresh' content='0;url=Department_viewtable.php'>";
            }   
            var_dump($row1);
?>

<FORM ACTION="Department_dmod.php" METHOD="post"> 
<input type="hidden" name="id" value="<?php echo $id; ?>" />
***Type doctor name <input type="text" name="new_Doctor_name" value="<?php echo $row1[3]; ?>" ><br />***
Type Department Name <input type="text" name="new_Dept_name" value="<?php echo $row1[1]; ?>" ><br />
Type Department Ward <input type="text" name="new_Ward" value="<?php echo $row1[2]; ?>" >
<INPUT TYPE="SUBMIT" NAME="UPDATE" VALUE="UPDATE"> 
<p><a href=Department_viewtable.php>Back to the Department table</a></p>
<p><a href=Main_Menu.php>Back to Main menu</a></p>
</FORM>

2 个答案:

答案 0 :(得分:1)

if()声明:

if( isset($_POST['new_Doctor_name']) )

只有input数据中存在名称为POST的{​​{1}}元素时才会执行。如果您从DOM中删除它,它将不会随请求一起传递,因此查询将无法执行。

最好检查new_Doctor_name请求中是否存在UPDATE变量:

POST

值得注意的是,if(isset($_POST['UPDATE'])) { $id = $_POST['id']; $new_Dept_name = $_POST['new_Dept_name']; $new_Ward = $_POST['new_Ward']; $sql1 = "UPDATE department SET Dept_name='$new_Dept_name', Ward='$new_Ward' WHERE Dept_id='$id'"; $res2 = mysql_query($sql1) or die("Could not Update".mysql_error()); echo "<meta http-equiv='refresh' content='0;url=Department_viewtable.php'>"; } 系列函数现已弃用。相反,您应该查看MySQLiPDO。最后,您的代码可以使用SQL注入,因此我建议您同时查看Prepared Statements

答案 1 :(得分:0)

变量row1在代码的这一部分中设置。如果变量返回一个尚未定义的错误,则表示下面的代码尚未执行。仅当设置了$_GET['edit1']变量时才会运行此代码。

if( isset($_GET['edit1']) )
        {
            $id = $_GET['edit1'];
            $res1= mysql_query("SELECT * FROM department WHERE Dept_name='$id'");
            $row1= mysql_fetch_array($res1);
        }