Home >Backend Development >PHP Tutorial >求助一段代码的执行结果输出代码编写

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

WBOY
WBOYOriginal
2016-06-06 20:46:481153browse

下面是一段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),方便数据库操作

<code class="lang-php">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;
                }
        }
}
</code>

数组1

<code class="lang-php">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] =>
                )
        )
)
</code>

数组2

<code class="lang-php">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
)
</code>

回复内容:

下面是一段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),方便数据库操作

<code class="lang-php">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;
                }
        }
}
</code>

数组1

<code class="lang-php">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] =>
                )
        )
)
</code>

数组2

<code class="lang-php">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
)
</code>

<code class="lang-PHP"><?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));

</code>
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn