我有一个问题,我的PHP解析相同的数据库值

时间:2014-05-22 05:26:28

标签: php mysql

我正在检查问题 如果我输入的数据已经存在 在数据库表和
如果没有,那么将其插入表中。 否则必须更新数据。任何想法?     

    $bill_year=$_POST['bill_year'];  //Getting the year value from dropdown list 
    $bill_month=$_POST['bill_month'];//Getting the Month value from dropdown list 
    $bill_value=$_POST['bill_value'];//Getting the Bill Value

    //Todays date & Time
    $tDate=date("Y/m/d");
    $today=date('Ymd', strtotime($tDate));
    $curr_dt=date("Y-m-d h:i:s A");

    $curr_year=date('Y');// Getting the current year
    $curr_month=date('m');//Getting the Current month


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

    if($curr_year >= $bill_year)// checking wether bill_year <= current year
    {
    if(is_numeric($bill_value))// checking wether bill_value is numeric?
    {

    //Checking Month number values.....
    if($bill_month=='January')
    {
    $month_value=1;
    }else if($bill_month=='February')
    {
    $month_value=2;
    }else if($bill_month=='March')
    {
    $month_value=3;
    }else if($bill_month=='April')
    {
    $month_value=4;
    }else if($bill_month=='May')
    {
    $month_value=5;
    }else if($bill_month=='June')
    {
    $month_value=6;
    }else if($bill_month=='July')
    {
    $month_value=7;
    }else if($bill_month=='August')
    {
    $month_value=8;
    }else if($bill_month=='September')
    {
    $month_value=9;
    }else if($bill_month=='October')
    {
    $month_value=10;
    }else if($bill_month=='November')
    {
    $month_value=11;
    }else if($bill_month=='December')
    {
    $month_value=12;
    }

    echo "huugffyyti";  
    //Connecting the DB an Send te values to Bill table
    $host="localhost"; //Host name 
    $username="root"; // Mysql username 
    $password=""; // Mysql password 
    $db_name="wcm"; // Database name 
    $tbl_name="bill"; // Table name 

    // Connect to server and select databse.
    mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
    mysql_select_db("$db_name")or 
    die("cannot select DB");

    $result2 =mysql_query("SELECT * FROM $tbl_name 
    WHERE bill_year='$bill_year',bill_month='$bill_month'");

    $affected_rows=mysql_num_rows($result2);


    if($affected_rows==1)//Chacking wether already entered the value to the same month
    {

    mysql_query("UPDATE $tbl_name SET bill_value='$bill_value'
    WHERE bill_year='$bill_year' AND bill_month='$bill_month'");

    }
    else if($affected_rows==0)
    {

    // Insert the Values to bill table
    mysql_query("INSERT INTO  $tbl_name(bill_year,bill_month,bill_value,month_value)
    VALUES ('$bill_year','$bill_month','$bill_value','$month_value')");
    }

    }else
    {   //if bill value is not numeric
    echo("<SCRIPT LANGUAGE='JavaScript'>
    window.alert('Please Enter a Valid Numeric Value!!!');
    </SCRIPT>");
    }

    }
    else
    {
    //if year and month are not correct
    echo("<SCRIPT LANGUAGE='JavaScript'>
    window.alert('Please select a valid Year and Month!!!');
    </SCRIPT>");
    }
    }

?>

1 个答案:

答案 0 :(得分:0)

这通常由SQL UPSERT命令解决。由于MySQL没有UPSERT,您可以使用这样的解决方法:

insert into sakila.actor (actor_id, first_name, last_name, last_update) 
    values (50,'NATALIE','SMITH','2013-09-27 12:34:56')
    on duplicate key update
        first_name = values(first_name),
        last_name = values(last_name),
        last_update = values(last_update);

有关如何制作UPSERT的更多信息,此示例已解释为here