search

Home  >  Q&A  >  body text

php - 求助一段代码的执行结果输出代码编写

下面是一段php代码,主要功能是操作数据库,但是是根据$new_data数组(数组1)进行数据库操作,所以每次都会进行多次数据库操作
下面是$new_data数组(数组1)文件内容。

需要完成的结果是程序循环执行完成后能判断那一处操作数据库失败,哪一处成功。程序会在循环内执行多次数据库操作,输出结果为全部成功输出{"ok":true},完全失败{"ok":false}部分失败(详细输出部位比如{"del":false,"del_err":$u_id|$tasw_id,"up":false,"up_err":$u_id|$tasw_id}
请注意循环内会执行多次删除,更新,插入数据库操作,当然可重写代码,但是数组格式固定,$new_data数组(数组1)在执行到$u_id=$res['u_id'];会生成以下$res数组(数组2),方便数据库操作

foreach($new_data as $key){
        $res = array();
        foreach ($key as $itm) {
                foreach ($itm as $it=>$valu) {
                        $res[Shortstr2($it)] = $valu;
                }
        }
        $u_id=$res['u_id'];
        $res['tasw_id']=$tasw_id;
        if($tasw_p =='x'){
                //执行删除操作
                $tasw_u_id=substr($e[0],1,strlen($e[0]));
                if(!db_del($tasw_id,$tasw_u_id)){
                        $tasw_err['d_err']=false;
                }else{
                        $tasw_err['d_ok']=true;
                }
        }
        $chk_u_id=$db->FirstValue("SELECT COUNT(*) FROM {$tbi} WHERE u_id='{$u_id}' and t_id='{$tasw_id}'");
        if($chk_u_id>0){
                //更新
                unset($res['u_id']);
                if(!$db->AutoExecute($tbi,$res,'UPDATE'," u_id='{$u_id}' and tree_id='{$tasw_id}'")){
                        $tasw_err['u_err']=false;
                }else{
                        $tasw_err['u_ok']=true;
                }
        }else{
                //插入
                if(!$db->AutoExecute($tbi,$res)){
                        $tasw_err['i_err']=false;
                }else{
                        $tasw_err['i_ok']=true;
                }
        }
}

数组1

Array
(
    [VLZC9] => Array
        (
            [0] => Array
                (
                    [i] => VLZC9
                    [^] => ASRWE
                    [g] => m
                    [l] => 12
                )
            [1] => Array
                (
                    [i] => VLZC9
                    [p] => 2
                )
        )
    [FQE10] => Array
        (
            [0] => Array
                (
                    [i] => FQE10
                    [^] => ASRWE
                    [g] => f
                    [s] => VLZC9
                    [l] => 12
                )
            [1] => Array
                (
                    [i] => FQE10
                    [p] => 1
                )
        )

    [ASRWE] => Array
        (
            [0] => Array
                (
                    [i] => ASRWE
                    [m] => FQE10
                    [f] => VLZC9
                )
        )
    [WEESA] => Array
        (
            [0] => Array
                (
                    [i] => WEESA
                    [x] =>
                )
        )
)

数组2

Array
(
    [u_id] => VLZC9
    [s_s] => ASRWE
    [g] => m
    [l] => 12
    [p] => 2
)
Array
(
    [u_id] => FQE10
    [s_s] => ASRWE
    [g] => f
    [s] => VLZC9
    [l] => 12
    [p] => 1
)
Array
(
    [u_id] => ASRWE
    [m] => FQE10
    [f] => VLZC9
)
PHP中文网PHP中文网2817 days ago332

reply all(1)I'll reply

  • 高洛峰

    高洛峰2017-04-10 14:44:54

    <?php 
    
    $result = array();
    
    foreach($new_data as $key){
        $res = array();
        foreach ($key as $itm) {
            foreach ($itm as $it => $valu) {
                    $res[Shortstr2($it)] = $valu;
            }
        }
        $u_id = $res['u_id'];
        $res['tasw_id'] = $tasw_id;
    
        $tasw_err = array();
    
        if ($tasw_p === 'x') {
            //执行删除操作
            $tasw_u_id = substr($e[0], 1, strlen($e[0]));        
            if (!db_del($tasw_id,$tasw_u_id)) {
                $tasw_err['del'] = false;
                $tasw_err['del_err'] = sprintf('%d|%d', $u_id, $tasw_id);
            }
        }
        $chk_u_id=$db->FirstValue("SELECT COUNT(*) FROM {$tbi} WHERE u_id='{$u_id}' and t_id='{$tasw_id}'");
        if($chk_u_id>0){
            //更新
            unset($res['u_id']);
            if (!$db->AutoExecute($tbi,$res,'UPDATE'," u_id='{$u_id}' and tree_id='{$tasw_id}'")) {
                $tasw_err['up'] = false;
                $tasw_err['u_err'] = sprintf('%d|%d', $u_id, $tasw_id);
            }
        }else{
            //插入
            if(!$db->AutoExecute($tbi,$res)){
                $tasw_err['in'] = false;
                $tasw_err['i_err'] = sprintf('%d|%d', $u_id, $tasw_id);
    
            }
        }
    
        if (!empty($tasw_err)) {
            $result[] = $tasw_err;
        }
    }
    
    if (empty($result)) {
        $result = array(
            'ok' => true,
        );
    } elseif (count($result) === count($new_data)) {
        $result = array(
            'ok' => false,
        );
    }
    
    die(json_encode($result));
    
    

    reply
    0
  • Cancelreply