【问题标题】:mysqli prepared statement - nested function does not performmysqli 准备好的语句 - 嵌套函数不执行
【发布时间】:2012-03-17 10:05:53
【问题描述】:

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

【问题讨论】:

    标签: php mysqli prepared-statement nested-function


    【解决方案1】:

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

    【讨论】:

    • 谢谢你的提示 - 你是对的,嵌套函数显然也使用准备好的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多