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

您正在尝试执行第二个准备好的语句,而第一个语句的结果集尚未存储。mysqli_stmt::store_result()在尝试执行第二条语句之前使用。

于 2012-02-27T22:45:01.813 回答