mysqli准备好的语句-嵌套函数不执行

问题描述 投票:3回答:1

提取中的嵌套函数(在另一个函数内部)不执行。

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);

// expected

这里一些名字===这里一些代码

//已接收

这里有些名字=== null(函数fn_smth1没有给出值)

php mysqli prepared-statement nested-function
1个回答
2
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.