通过表单数据更新mysql保留旧值

时间:2016-05-06 10:42:50

标签: php mysql forms

我正在与以下代码作斗争。以下内容旨在:

1)从数据库中读取数据过程数据  2)以准备编辑的形式显示数据  3)编辑完成后,在提交时,将编辑后的值传递给数据库

我得到的问题是我能够执行1和2而没有任何问题,但是当我在步骤3中将编辑数据传递给数据库时,将传递步骤1中显示的旧值。如何获取要传递的编辑值而不是旧值?

提前谢谢

$readQuery="SELECT * FROM course WHERE course_id={$id}"; 
$readResult=mysqli_query($connection, $readQuery);
validateQuery($readResult);         

while($row=mysqli_fetch_assoc($readResult))
{
$courseId=$row["course_id"];
$courseName=$row["course_name"];
$courseDescr=$row["course_descr"];
$courseCost=$row["course_cost"];
$courseDuration=$row["course_duration"];
}
?>
<form action="course_man.php?page=<?php echo $page?>" &id=<?php echo $id?>" method="post">
    <table>
        <tr>
            <td align="right">
                <!--Course ID <input type="text" name="course_id" value="<?php //echo $courseId;?>"/><br/>-->
                Course Name <input type="text" name="course_name" value="<?php echo $courseName;?>"/><br/>
                Course Description <textarea name ="course_descr" rows="6" cols ="30" ><?php echo $courseDescr;?></textarea><br/>
                Course Cost <input type="text" name="course_cost" value="<?php echo $courseCost;?>"/><br/>
                Course Duration <input type="text" name="course_duration" value="<?php echo $courseDuration;?>"/><br/>
                <input type="submit" name="update" value="Update"/>
            </td>
        </tr>
    </table>
    </form>
    <?php   

    }
    if(isset ($_POST['update']))
    {

    $updateQuery="UPDATE course SET ";
    $updateQuery.="course_name='{$courseName}', ";
    $updateQuery.="course_descr='{$courseDescr}', ";
    $updateQuery.="course_cost={$courseCost}, ";
    $updateQuery.="course_duration={$courseDuration}, ";
    $updateQuery.="WHERE course_id={$id}";
    $check = mysqli_query($connection, $updateQuery);
    mysqli_error($connection);
    }

3 个答案:

答案 0 :(得分:0)

逐行浏览您的代码。如何从脚本中获取表单中的新值?在所有情况下都执行sql查询,并且无论如何都使用旧值设置诸如$ courseName之类的变量。现在,当我们到达更新部分时,仍然使用旧值设置变量。

if(isset ($_POST['update']))
{

$updateQuery="UPDATE course SET ";
$updateQuery.="course_name='". $_POST['course_name'] ."', ";
$updateQuery.="course_descr='". $_POST['course_descr'] ."', ";
$updateQuery.="course_cost=". $_POST['course_cost'] .", ";
$updateQuery.="course_duration=". $_POST['course_duration'] .", ";
$updateQuery.="WHERE course_id=". $_POST['course_id'];
$check = mysqli_query($connection, $updateQuery);
mysqli_error($connection);
}

在SELECT ...查询之前移动此代码。并且在放入查询之前不要忘记清理用户数据!使用mysqli_real_escape_string()http://php.net/manual/en/mysqli.real-escape-string.php或其他。

答案 1 :(得分:0)

当你向course_man.php提交表单时,它再次从db获取数据,你的下面的变量将被db值覆盖。

$courseId=$row["course_id"];
$courseName=$row["course_name"];
$courseDescr=$row["course_descr"];
$courseCost=$row["course_cost"];
$courseDuration=$row["course_duration"]; 

答案 2 :(得分:0)

试试这个......

$updateQuery="UPDATE course SET course_name = '$courseName', course_descr = '$courseDescr', course_cost = '$courseCost', course_duration = '$courseDuration' WHERE course_id = $id ";