首页 文章

mysqli预编译语句 - 嵌套函数不执行

提问于
浏览
3

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没有给出值)

1 回答

  • 2

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

相关问题