How to use mysqli_stmt_affected_rows() with prepared statements?
<p>After changing this query to be user with binding parameters, It won't work anymore.</p>

<pre><code>    $conectar2 = mysqli_connect(HOST, USER, PASS, DATABASE);

    $buscarUsuarioExistente = " SELECT userID, userEmail 
                                FROM usuarios 
                                WHERE userEmail =?
                              ";
                    $usuarioExiste = mysqli_prepare($conectar2,$buscarUsuarioExistente);
                    mysqli_stmt_bind_param($usuarioExiste, 's', $email);
                    mysqli_stmt_execute($usuarioExiste);
                    mysqli_stmt_close($usuarioExiste);

//SI EL MAIL QUE PONE EL USUARIO YA EXISTE EN BASE
    if (mysqli_stmt_affected_rows($usuarioExiste) != 0) {
            $usuario = mysqli_fetch_assoc($usuarioExiste);
            //como nos devuelve un array, extraemos el primer elemento como string. El array contiene sólo un elemento.
            $userID = array_shift($usuario);
            //si el usuario existe en base, no lo generamos, sino que le agregamos el curso que seleccionó y le asignamos el rol "noAutorizado" hasta no verificar el pago
                    $asignarRol = "INSERT INTO rolesUsuarios 
                                    (userID, nombreRol) 
                                   VALUES 
                                    (?, ?)
                                   ";
                    $noAutorizado = 'noAutorizado';             
                    $asignarRolenBase = mysqli_prepare($conectar2,$asignarRol);
                    mysqli_stmt_bind_param($asignarRolenBase, 'ss', $userID, $noAutorizado);
                    mysqli_stmt_execute($asignarRolenBase);

                    if ($asignarRolenBase) {
                        echo 'Estado "pendiente" del usuario generado.&lt;br&gt;';
                        } 
                        else { 
                            echo 'Error al asignar estado al usuario'.mysqli_error($conectar2).'&lt;br&gt;';
                        }
                    mysqli_stmt_close($asignarRolenBase);

    }
</code></pre>

<p>The problem seems to be with this: <code>mysqli_stmt_affected_rows($usuarioExiste) != 0</code> (this is line 45)</p>

<p>Because I get this error:</p>

<blockquote>
  <p>Warning: mysqli_stmt_affected_rows(): Couldn't fetch mysqli_stmt in
  /home/public_html/inscripcionUsuario.php on line 45</p>
</blockquote>

<h2>UPDATE:</h2>

<p>I've noticed that I do close it in the line before I call it (thanks Qirel), but moving further down that line, so I don't close it before, gives me this error:</p>

<blockquote>
  <p>Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result,
  object given</p>
</blockquote>

<p>So, with the update:
        $conectar2 = mysqli_connect(HOST, USER, PASS, DATABASE);</p>

<pre><code>    $buscarUsuarioExistente = " SELECT userID, userEmail 
                                FROM usuarios 
                                WHERE userEmail =?
                              ";
                    $usuarioExiste = mysqli_prepare($conectar2,$buscarUsuarioExistente);
                    mysqli_stmt_bind_param($usuarioExiste, 's', $email);
                    mysqli_stmt_execute($usuarioExiste);

//SI EL MAIL QUE PONE EL USUARIO YA EXISTE EN BASE
    if (mysqli_stmt_affected_rows($usuarioExiste) != 0) {
            $usuario = mysqli_fetch_assoc($usuarioExiste);
            //como nos devuelve un array, extraemos el primer elemento como string. El array contiene sólo un elemento.
            $userID = array_shift($usuario);
            //si el usuario existe en base, no lo generamos, sino que le agregamos el curso que seleccionó y le asignamos el rol "noAutorizado" hasta no verificar el pago
                    $asignarRol = "INSERT INTO rolesUsuarios 
                                    (userID, nombreRol) 
                                   VALUES 
                                    (?, ?)
                                   ";
                    $noAutorizado = 'noAutorizado';             
                    $asignarRolenBase = mysqli_prepare($conectar2,$asignarRol);
                    mysqli_stmt_bind_param($asignarRolenBase, 'ss', $userID, $noAutorizado);
                    mysqli_stmt_execute($asignarRolenBase);

                    if ($asignarRolenBase) {
                        echo 'Estado "pendiente" del usuario generado.&lt;br&gt;';
                        } 
                        else { 
                            echo 'Error al asignar estado al usuario'.mysqli_error($conectar2).'&lt;br&gt;';
                        }
                    mysqli_stmt_close($asignarRolenBase);
                    mysqli_stmt_close($usuarioExiste);

    }
</code></pre>

<h2>Update:</h2>

<p>I've tried with <strong>mysqli_stmt_num_rows()</strong> 
(<code>if (mysqli_stmt_num_rows($usuarioExiste) != 0)</code>)</p>

<p>Instead and I've got this error:</p>

<blockquote>
  <p>Warning: mysqli_stmt_bind_param() expects parameter 1 to be
  mysqli_stmt, boolean given</p>
</blockquote>