如何升级php数据中的指定

时间:2014-03-10 16:57:55

标签: php

我正在与mlm公司的网站合作,我设计将成员的状态从一步升级到更高,添加5名成员后,每个成员必须升级到更高级别。我有一些代码,但我不知道如何调用此函数

这是我的代码: -

function CheckAndUpgradeDesignation($username,$des)
    {
    if($des=='Crown')
    return;
    $q="SELECT introducer_id FROM members WHERE user_id='$username'";
    $rs=mysql_query($q);
    $r=mysql_fetch_array($rs);
    $id=$r['introducer_id'];
    $q="SELECT count(*) as total from members WHERE introducer_id='$id' AND designation='$des'";
        $rs1=mysql_query($q);
    $r1=mysql_fetch_array($rs1);
    $t=$r1['total'];
    if($t==5)
    {
    if($des=="VIP")
       $des1="Journey";
       else
        if($des=="Journey")
       $des1="Executive";
       else
        if($des=="Executive")
       $des1="DreamFlight";
       else
        if($des=="DreamFlight")
       $des1="Safari";
       else
        if($des=="Safari")
       $des1="GoldRace";
       else
        if($des=="GoldRace")
       $des1="RoyalRace";
       else
        if($des=="RoyalRace")
       $des1="Aashiyana";
       else
        if($des=="Aashiyana")
       $des1="Crown";
       $q="UPDATE members SET designation='$des1' WHERE user_id='$id'";
       mysql_query($q);
       CheckAndUpgradeDesignation($id,$des1);
       }
}

请检查任何人是否这个代码看起来正确或需要一些改变...............如果你有些问题问我

2 个答案:

答案 0 :(得分:0)

你可以这样调用这个函数:CheckAndUpgradeDesignation('1', 'GoldRace');

您也可以将函数参数$username重命名为$userid,因为SQL使用user_id

请正确转义插入SQL语句的值以避免注入。

也许将函数重构为3个函数:

  1. fetchDesignation($ user_id) - 返回user_id
  2. 的名称
  3. raiseDesignation($ des) - 这是升级并返回新等级或错误的逻辑部分
  4. updateDesignation($ user_id,$ des) - 将新级别插入db
  5. 这个建议稍微灵活一点,但这取决于用例。 它允许在单独的单元测试中测试raiseDesignation()的逻辑,而不需要触及db。同时获取user_id的名称也是分开的。

答案 1 :(得分:0)

我可以重构你的代码来分离一些重要的任务。另一方面,我建议你不要尝试用大量代码编写大型函数,因为它可能不容易理解。

 <?php

function CheckAndUpgradeDesignation($userId, $designation)
{
    if ($designation == 'Crown') {
        return;
    }

    $introducerId = GetIntroducerIdByUserId($userId);
    $memberTotal = GetTotalOfMembersByIntroducerIdAndDesignationId($introducerId, $designation);

    if ($memberTotal == 5) {
        $designationValue = VerifyDesignation($designation);
        UpdateDesignation($designationValue, $introducerId);
        CheckAndUpgradeDesignation($introducerId, $designationValue);
    }
}

function VerifyDesignation($designation)
{
    $designationList = array(
        'VIP' => 'Journey',
        'Journey' => 'Executive',
        'Executive' => 'DreamFlight',
        'DreamFlight' => 'Safari',
        'Safari' => 'GoldRace',
        'GoldRace' => 'RoyalRace',
        'RoyalRace' => 'Aashiyana',
        'Aashiyana' => 'Crown'
    );

    if (key_exists($designation, $designationList)) {
        return $designationList[$designation];
    }

    return null;
}

function GetIntroducerIdByUserId($id)
{
    $query = "SELECT introducer_id FROM members WHERE user_id='$id'";
    $result = mysql_query($query);
    $response = mysql_fetch_array($result);

    return $response['introducer_id'];
}

function GetTotalOfMembersByIntroducerIdAndDesignationId($introducerId, $designation)
{
    $query = "SELECT count(*) as total from members WHERE introducer_id='$introducerId' AND designation = '$designation'";
    $result = mysql_query($query);
    $response = mysql_fetch_array($result);

    return $response['total'];
}

function UpdateDesignation($designationValue, $introducerId)
{
    $query = "UPDATE members SET designation='$designationValue' WHERE user_id = '$introducerId'";
    mysql_query($query);
}

同时检查VerifyDesignation函数,它可以更高效,而不是使用多个if语句。

我希望它可以帮到你。