mysql UPDATE变量

时间:2013-06-04 18:32:33

标签: php mysql

大家好我有这样的代码

include('db.php');

if (isset($_POST['save']) && $_POST['save'] == '') {

    if(isset($_POST['misamarti'])){ $misamarti = $_POST['misamarti']; }
    if(isset($_POST['teleponi'])) { $teleponi = $_POST['teleponi']; }
    if(isset($_POST['posta'])) { $posta = $_POST['posta']; }
    if(isset($_POST['paqsi'])) { $paqsi = $_POST['paqsi'];}


    $query = "UPDATE contact SET  `misamarti` =  ".$misamarti.", `teleponi` =  ".$teleponi.", `posta` =  ".$posta.", `paqsi` =  ".$paqsi." WHERE  `contact`.`id` =1;";
    $result = mysql_query($query);

}

<form method="post" action="" enctype="multipart/form-data">
<input type="hidden" name="about" value="template1" />
<input type="text" value="" name"misamarti" />
<input type="text" value="" name"teleponi" />
<input type="text" value="" name"posta" />
<input type="text" value="" name"paqsi" />
<input type="submit" value="" name="save" /> 

,结果是

  

注意:未定义的变量:第18行的C:\ xampp \ htdocs \ Template \ admin_panel \ contact.php中的misamarti
  注意:未定义的变量:第18行的C:\ xampp \ htdocs \ Template \ admin_panel \ contact.php中的teleponi
  注意:未定义的变量:第18行的C:\ xampp \ htdocs \ Template \ admin_panel \ contact.php中的posta
  注意:未定义的变量:第18行的C:\ xampp \ htdocs \ Template \ admin_panel \ contact.php中的paqsi

如果有人知道为什么这个错误请评论。

2 个答案:

答案 0 :(得分:0)

即使它们未随表单一起提交,您也在使用这些变量,并使用这些未定义的变量更新数据库中的字段,因此您将破坏以前数据库中的所有数据。

如果不出意外,您至少需要为字段设置默认值,例如:

 $misamarti = isset($_POST['misamarti']) ? $_POST['misamarti'] : '';
                                                                 ^^--default empty string

然后意识到你对sql injection attack的开放态度很高。你正准备让你的服务器pwn3d。

答案 1 :(得分:0)

正如您在HTML代码中看到的那样,您的名字写得不好,必须以这种方式编写:name="misamarti"。你忘记了=和名字之间的平等(name)。如果您看到其他属性,例如textvalue,您会发现它们是相同的,这是设置属性的正确方法。