mysqli подготовил оператор - вложенная функция не выполняет
Вложенная функция внутри fetch (которая находится внутри другой функции) не выполняет.
fn_smth1 вложен в fn_smth2 и должен выводить результат через fn_smth2
Пример ниже представляет собой упрощенную версию.
function fn_smth1 ($ id) { global $ mysqli; $ stmt = $ mysqli-> stmt_init (); if ($ stmt-> prepare ("ВЫБЕРИТЕ код ОТ ГДЕ id =?")) { $ Stmt->bind_param("я",$ ID); $ Stmt-> Execute (); $ Stmt-> bind_result ($ код); if ($ stmt-> fetch ()) { $ code_displ = $ code; } } $ Stmt-> близко; вернуть $ code_displ; } function fn_smth2 ($ id) { global $ mysqli; $ stmt = $ mysqli-> stmt_init (); if ($ stmt-> prepare ("ВЫБЕРИТЕ idx, имя FROM в WHERE id =?")){ $ Stmt->bind_param("я",$ ID); $ Stmt-> Execute (); $ stmt-> bind_result ($ idx, $name); if ($stmt->fetch()){ $code_displ = $name.' === '.fn_smth1($idx); } } $ Stmt-> близко; вернуть $ code_displ; } echo fn_smth2 (1);
// ожидается
какое-то имя здесь === какой-то код здесь
//получено
какое-то имя здесь === null (функция fn_smth1 не дает значения)
1 ответ
Решение
Вы пытаетесь выполнить второй подготовленный оператор, а набор результатов из первого еще не был сохранен. использование mysqli_stmt::store_result()
прежде чем пытаться выполнить второе утверждение.