Atualização do Mysqli lançando Chamada para um erro bind_param () da função de membro

Oi eu tenho um formulário de campo 70/80 que eu preciso para inserir em uma tabela assim, em vez de criar manualmente uma declaração de inserção enorme em primeiro lugar eu criei uma tabela no meu banco de dados a partir dos nomes das entradas no formulário aqui é o código que eu use para criar / alterar a tabela

function createTable($array, $memberMysqli)
{
   foreach ($array as $key => $value)
   {
            //echo "<p>Key: ".$key." => Value: ".$value . "</p>";
            $query = "ALTER TABLE questionnaire ADD ".$key."  text";

            if($stmt = $memberMysqli->prepare($query))
            {
                $success = $stmt->execute();
            }
   }
         echo "<h1>Array count: ". count($array) ."</h1>" ;
}

Isso funciona bem e alterou a tabela exatamente como eu queria. Agora, para inserir os valores de formulário para fazer isso, eu faço um armazenamento de inserção de um campo básico o id da linha e, em seguida, tenho loop todas as variáveis ​​de post atualizando essa linha. Aqui está o meu código para isso:

$stmt = $memberMysqli->prepare("INSERT INTO questionnaire(userid) VALUES (?)");

$stmt->bind_param('s', $_POST['userid']);
$stmt->execute();
$rowid = $stmt->insert_id;
$stmt->close();

$memberMysqli->autocommit(FALSE);

function updateColumn($memberMysqli, $query, $uid, $value) 
{
    if ($value) 
    {
        $stmt = $memberMysqli->prepare($query);
        //Throws bind param error here
        $stmt->bind_param("ss", $value, $uid);
        $stmt->execute();
    }
}

function loopInputs($array, $memberMysqli, $rowid)
{
     foreach ($array as $key => $formvalue)
     {
        var_dump($key);
        updateColumn($memberMysqli, "UPDATE questionnaire SET $key = ? WHERE id = ?", $rowid, $formvalue);
     }
}

loopInputs($_POST, $memberMysqli, $rowid);

$memberMysqli->commit();
$memberMysqli->close();

Isso gera um erro de ligação e não sei por quê. Qualquer ajuda seria ótimo.

questionAnswers(1)

yourAnswerToTheQuestion