4

fetch 内のネストされた関数 (別の関数内) は実行されません。

fn_smth1 は fn_smth2 内にネストされており、fn_smth2 を介して結果を出力する必要があります

以下の例は簡略化されたバージョンです。

function fn_smth1 ($id){
    global $mysqli;
    $stmt = $mysqli->stmt_init();
    if ($stmt->prepare("SELECT code FROM at WHERE id = ?")){
        $stmt->bind_param("i",$id);
        $stmt->execute();
        $stmt->bind_result($code);
        if ($stmt->fetch()){
            $code_displ = $code; 
        }
    }
    $stmt->close;
    return $code_displ;
}


function fn_smth2($id){
    global $mysqli;
    $stmt = $mysqli->stmt_init();
    if ($stmt->prepare("SELECT idx, name FROM at WHERE id = ?")){
        $stmt->bind_param("i",$id);
        $stmt->execute();
        $stmt->bind_result($idx, $name);
        if ($stmt->fetch()){
            $code_displ = $name.' === '.fn_smth1($idx); 
        }
    }
    $stmt->close;
    return $code_displ;
}


echo fn_smth2(1);

//期待される

ここにいくつかの名前 === ここにいくつかのコード

//受け取った

ここに何らかの名前 === null (関数 fn_smth1 は値を与えません)

4

1 に答える 1

2

最初の結果セットがまだ保存されていないときに、2 番目の準備済みステートメントを実行しようとしています。mysqli_stmt::store_result()2 番目のステートメントを実行する前に使用します。

于 2012-02-27T22:45:01.813 に答える