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 回答
您正尝试执行第二个预准备语句,而第一个语句的结果集尚未存储 . 在尝试执行第二个语句之前使用mysqli_stmt::store_result() .