首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我的php表单只起部分作用,我不知道为什么

问我的php表单只起部分作用,我不知道为什么
EN

Stack Overflow用户
提问于 2013-09-02 19:09:31
回答 1查看 75关注 0票数 0

我的页面上有两条。在第一个sql表中,我更新或编辑数据。使用第二个sql表,我可以添加和删除第二个sql表中的数据。对"ID“值采取了某些措施。

这是我的表格:

代码语言:javascript
复制
<form class="form_hidden" name="form1" style="left:10px;top:10px;" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    <input class="final_form input_id"                  name="input_id"/>
    <input class="final_form input_date"                name="input_date" />
    <input class="final_form input_poczatkowy"          name="input_poczatkowy" />
    <input class="final_form input_gotowka"             name="input_gotowka" />
    <input class="final_form input_karta"               name="input_karta" />
    <input class="final_form input_pobrano"             name="input_pobrano" />
    <input class="final_form input_kto"                 name="input_kto" />
    <button class="hidden_button button_1" type="submit"  name="form1submit">btn</button>
</form>

<form class="form_hidden" name="form2" style="left:10px;top:300px;" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    <input class="final_form wydatek_id"                  name="wydatek_id"/>
    <input class="final_form wydatek_date"                name="wydatek_date" />
    <input class="final_form wydatek_kwota"               name="wydatek_kwota" />
    <input class="final_form wydatek_rodzaj"              name="wydatek_rodzaj" />
    <input class="final_form wydatek_opis"                name="wydatek_opis" />
    <button class="hidden_button button_1" type="submit" name="form2submit">btn</button>
</form>  

这是我的php代码:

代码语言:javascript
复制
$db_name = 'DATABASE_NAME';
$db_host = 'localhost';
$db_user = 'DATABASE_USER';
$db_pass = 'PASSWORD';


$conn = mysql_connect($db_host,$db_user,$db_pass);
mysql_select_db($db_name);

mysql_query("SET CHARSET utf8");
mysql_query("SET NAMES `utf8` COLLATE `utf8_polish_ci`");   

if(isset($_POST['form1submit']))
{
    $raport_id = $_POST['input_id'];
    $raport_date = $_POST['input_date'];
    $raport_poczatkowy = $_POST['input_poczatkowy'];
    $raport_gotowka = $_POST['input_gotowka'];
    $raport_karta = $_POST['input_karta'];
    $raport_pobrano = $_POST['input_pobrano'];
    $raport_kto = $_POST['input_kto'];


   if($raport_id=='null'){
       $sql = "INSERT INTO `raporty`(`id`, `data`, `stan_poczatkowy`, `platnosci_gotowka`, `platnosci_karta`, `pobrano`,`kto_pobral`, `komentarz`)
           VALUES('".NULL."','".$raport_date."','".$raport_poczatkowy."','".$raport_gotowka."','".$raport_karta."','".$raport_pobrano."','".$raport_kto."','".NULL."')";
    }else{
        $sql = "UPDATE `raporty` SET  
            `data`='".$raport_date."', 
            `stan_poczatkowy`='".$raport_poczatkowy."', 
            `platnosci_gotowka`='".$raport_karta."', 
            `platnosci_karta`='".$raport_gotowka."', 
            `pobrano`='".$raport_pobrano."',
            `kto_pobral`='".$raport_kto."',
            `komentarz`='".NULL."'
             WHERE `raporty`.`id`='".$raport_id."'";
    }
    $retval = mysql_query($conn,$sql);
    header("Location: http:page");
    exit;               
}

if(isset($_POST['form2submit']))
{
    $wydatek_id = $_POST['wydatek_id'];
    $wydatek_date = $_POST['wydatek_date'];
    $wydatek_kwota = $_POST['wydatek_kwota'];
    $wydatek_rodzaj = $_POST['wydatek_rodzaj'];
    $wydatek_opis = $_POST['wydatek_opis'];

    if($wydatek_id=='null'){
        $sql = "INSERT INTO `wydatki` (`id` ,`data` ,rodzaj` ,`kwota` ,`kategoria` ,`opis`) VALUES ('".NULL."','".$wydatek_date."','wydatek','".$wydatek_kwota."','".$wydatek_rodzaj."','".$wydatek_opis."')";      
    }else{
        $sql = "DELETE FROM `wydatki` WHERE `wydatki`.`id` = '".$wydatek_id."'";
    }
    $retval = mysql_query( $sql, $conn );
    header("Location: http:page");
    exit;        
}          

有趣的是,唯一起作用的是从查询中删除wydatki表。其余的只是不工作,我不知道为什么。而且,在我添加第二份表格之前,他们就开始工作了。

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-02 19:11:14

您的参数在第一次调用mysql_query()时是向后的。

代码语言:javascript
复制
mysql_query($conn,$sql);

应:

代码语言:javascript
复制
mysql_query($sql,$conn);

尽管如此,mysql_*函数家族已经被废弃了,不应该在新代码中使用。相反,它们已经被mysqli_*和PDO替换为准备好的语句。

还值得注意的是,您的表单是,完全易受来自数据库输入没有任何转义的MySQL注入的攻击。这正是mysqli和PDO中存在准备语句的确切原因,也是您应该使用它们的确切原因。现在,任何人都可以通过在表单中运行自己的SQL代码来清除整个数据库。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18579454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档