在Month上插入数据库库值?

时间:2014-09-12 04:11:11

标签: php mysql database insert sql-update

我无法在月份中插入值。我每个月有12列。我的代码只存储1月份的值。如果我使用开关可以吗?

if ($_GET['do'] == 'insert')
    {   
        $p_aid          = $_GET['id'];
        $t_no           = $_POST['t_no'];       
        $t_month        = $_POST['t_month']; //dropdown
        $t_value        = $_POST['t_value']; //value based on month selected
        $t_year         = $_POST['t_year']; 


        $sql = "INSERT INTO tbl_detail (p_aid,t_not_year) ";
        $sql .= "VALUES ($p_aid,'$t_no''$t_year')";
        mysql_query($sql);

        switch ($t_month) {

        case $t_month = "Jan";
            $sql = "UPDATE tbl_detail SET t_jan = '$t_value'";      
            $sql .= "WHERE p_aid = $p_aid AND t_no = $t_no";
        break;

        case $t_month = "Feb";
            $sql = "UPDATE tbl_detail SET t_feb = '$t_value'";      
            $sql .= "WHERE p_aid = $p_aid AND t_no = $t_no";
        break;

            mysql_query($sql);
        }

        redirect("basicview.php?id=$p_aid&type=success&msg=new+row+added");
    }

3 个答案:

答案 0 :(得分:3)

首先,您的案例陈述不正确。

case $t_month = "Jan";

应该是

case "Jan":

case 0:

(无论$t_month的值是什么)。

如果下拉列表中包含您想要的文字,则无需switch

如果它具有月份的数量,那么一个数组也可以工作,而没有那么多的评估。

编辑:这是对Tome评论的补充。 编辑#2:如果下拉列表 有文本,那么绝对想要检查它是否有效,这样就不会添加更多SQL注入选项。 / p>

并继续编辑......这样的事情将解决很多问题:

if ($_GET['do'] == 'insert')
{   
    $p_aid          = (int)$_GET['id'];
    $t_no           = (int)$_POST['t_no'];

    $months = array(''=>'Jan', 'Jan'=>'Jan', 'Feb'=>'Feb', 'Mar'=>'Mar', 'Apr'=>'Apr', 'Mar'=>'Mar', 'Apr'=>'Apr', 'May'=>'May', 'Jun'=>'Jun', 'Jul'=>'Jul', 'Aug'=>'Aug', 'Sep'=>'Sep', 'Oct'=>'Oct', 'Nov'=>'Nov', 'Dec'=>'Dec');

    $t_month        = $months[$months[$_POST['t_month']]]; //dropdown
    $t_value        = $_POST['t_value']; //value based on month selected
    $t_year         = (int)$_POST['t_year']; 

    $sql = "INSERT INTO tbl_detail (p_aid,t_not_year,t_" . strtolower($t_month) . ") ";
    $sql .= "VALUES ($p_aid,'$t_no''$t_year', '" . $t_month . "')";
    mysql_query($sql);

    redirect("basicview.php?id=$p_aid&type=success&msg=new+row+added");
}

尽管如此,我不确定你要对'$t_no''$t_year'做什么,但我认为这是不对的。

答案 1 :(得分:0)

您无需使用开关盒。使用以下代码存储相关月份及其值。试试这个....

if ($_GET['do'] == 'insert')
{   
    $p_aid          = $_GET['id'];
    $t_no           = $_POST['t_no'];       
    $t_month        = $_POST['t_month']; //dropdown
    $t_value        = $_POST['t_value']; //value based on month selected
    $t_year         = $_POST['t_year']; 


    $sql = "INSERT INTO tbl_detail (p_aid,t_no, t_year, $t_month) ";
    $sql .= "VALUES ($p_aid,'$t_no','$t_year','$t_value')";
    mysql_query($sql);

}

答案 2 :(得分:0)

你可以试试这个

if ($_GET['do'] == 'insert')
    {   
        $p_aid          = $_GET['id'];
        $t_no           = $_POST['t_no'];       
        $t_month        = $_POST['t_month']; //dropdown
        $t_value        = $_POST['t_value']; //value based on month selected
        $t_year         = $_POST['t_year']; 


        $sql = "INSERT INTO tbl_detail (p_aid,t_not_year) ";
        $sql .= "VALUES ($p_aid,'$t_no''$t_year')";
        mysql_query($sql);

        $col="t_".strtolower($t_month);
        $sql = "UPDATE tbl_detail SET $col = '$t_value'";      
        $sql .= "WHERE p_aid = $p_aid AND t_no = $t_no";
        mysql_query($sql);

        redirect("basicview.php?id=$p_aid&type=success&msg=new+row+added");
    }