它不会更新或更改数据库

时间:2017-03-28 16:10:19

标签: php mysql

如何更新表格中的多个列? 它不会改变数据库中的数据。

<?php
$id = $_GET['user'];
$any = mysql_query("SELECT * FROM function WHERE id='".$id ."'");
if ($edit = mysql_fetch_assoc($any)){
?>

//this is the form for the input type when updating the column

<form action="reserve_event.php" method="POST">
    <input type="text" name="fh" value="<?php echo $edit['fh'];?>">
    <input type="text" name="package" value="<?php echo $edit['package'];?>">
    <input type="text" name="guest" value="<?php echo $edit['guest'];?>">
    <input type="text" name="fee" value="<?php echo $edit['fee'];?>">
    <input type="text" name="status" value="<?php echo $edit['status'];?>">
    <input type="submit" name="submit" value="submit">
</form>

//this part is when i submit the data.
<?php
}
if(isset($_POST['submit'])){
    $fh= $_POST["fh"];
    $package= $_POST["package"];
    $guest= $_POST["guest"];
    $fee = $_POST["fee"];
    $status= $_POST["status"];
    $sql1 = mysql_query("UPDATE function SET fh='".$fh."',package= '".$package."', guest = '".$guest."',fee = '".$fee."',status= '".$status."' WHERE id='".$id."'");
}
?>

2 个答案:

答案 0 :(得分:0)

您可以尝试使用打击代码:

<?php
if(isset($_POST['submit']))
{
    $fh= $_POST["fh"];
    $package= $_POST["package"];
    $guest= $_POST["guest"];
    $fee = $_POST["fee"];
    $status= $_POST["status"];
    $sql1 = mysql_query("UPDATE `function` SET `fh`='".$fh."',`package`= '".$package."', `guest` = '".$guest."',`fee` = '".$fee."',`status`= '".$status."' WHERE `id`='".$id."'");
}
?>

答案 1 :(得分:0)

您正在使用保留字&#34;功能&#34;对于你的表名的mysql,一个或你的列名称&#34; status&#34;也是一个保守的词。这意味着mysql服务器将读取函数并尝试执行它而不是选择具有该名称的表。恕我直言,最好不要在表或列定义中使用保留字,但你可以使用反引号`来转义名称。

This link会为您提供保留字列表。 所以只需这样调整你的查询:

$sql1 = mysql_query("UPDATE `function` 
SET fh='$fh',package= '$package', guest = '$guest',fee = '$fee', `status`= '$status' 
WHERE id='$id'");

如果您的查询中有更多保留字,请查看我提供给您的链接

同样适用于选择查询:

$any = mysql_query("SELECT * FROM `function` WHERE id='$id'");

正如我在评论中提到的那样:您的代码对SQL注入是开放的:使用预准备语句来清理用户输入。在PHP 7中不推荐使用Mysql_ * API。移至mysqli或更好的PDO