Hi James,

The manual page for mysqli_stmt::execute has the following note :

When using mysqli_stmt_execute(), the 
    mysqli_stmt_fetch() function must be used to fetch the
    data prior to performing any additional queries.
   

So you cannot execute the inner (sub) query without first retrieving all the 
rows from the outer (main) query.

Olivier Desmares

 $stmt = mysqli_prepare($db, $sql);
 mysqli_stmt_execute($stmt);
 mysqli_stmt_bind_result($stmt, $authkv);
 
 while (mysqli_stmt_fetch($stmt)) {
 echo "<p>MAIN: $authkv</p>";
 sub($db);
} 
 
 mysqli_stmt_close($stmt);
 
This simple change results in the output.
 
MAIN: 7
Warning: mysqli_stmt_execute() expects parameter 1 to be mysqli_stmt,  boolean 
given in /var/www/html/xgwebapi/mysqli.php on line 21  Warning: 
mysqli_stmt_bind_result() expects parameter 1 to be  mysqli_stmt, boolean given 
in /var/www/html/xgwebapi/mysqli.php on line  22  Warning: mysqli_stmt_fetch() 
expects parameter 1 to be mysqli_stmt,  boolean given in 
/var/www/html/xgwebapi/mysqli.php on line 24  Warning: mysqli_stmt_close() 
expects parameter 1 to be mysqli_stmt,  boolean given in 
/var/www/html/xgwebapi/mysqli.php on line 28

Reply via email to