mysqli_stmt_get_result alternativa para php 5.2.6

No soy un experto en php, he desarrollado un pequeño servicio que consulta una base de datos de mysql.

Sin embargo, desarrollé con php 5.4, y luego descubrí que mi plan de alojamiento web tiene 5.2.6, por lo que estoy teniendo algunos problemas con alguna función indefinida.

Específicamente, en este caso, ¿cómo puedo resolver la función indefinida mysqli_stmt_get_result disponible en> 5.3? Aquí está el código:

$stmt = mysqli_prepare($con,$db_query); if($stmt) { mysqli_stmt_bind_param($stmt,'ss',$after,$lang); mysqli_stmt_execute($stmt); $result = mysqli_stmt_get_result($stmt); // $cardName, 'status'=>$cardStatus, 'cardId'=>$cardId, 'language'=>$language ) ); } } $response = array( 'cards'=>array( 'updated'=>$updated, 'deleted'=>$deleted ) ); $json = json_encode($response); mysqli_close($con); echo $json; } 

El punto es que estoy usando una statement preparada, debido a mi falta de conocimiento de PHP, no encontré otra forma de resolver el problema sin volver a escribir todo el script.

Pensé que algunos de ustedes pueden tener una solución simple y fácil.

La función mysqli_stmt_get_result es solo para PHP 5.3 o superior. No existe para su versión de PHP 5.2.x (que ya no se admite por cierto).

La alternativa es usar mysqli_stmt_bind_result con enlaces de variables.

En su ejemplo concreto, esto tiene incluso la ventaja de que no necesita asignar los miembros de la matriz a las variables, ya que puede vincular las variables directamente.

La función mysqli_stmt_get_result se introdujo porque alguien pensó que esto se interpondría en tu camino y obtener una matriz hubiera sido más fácil.

Tenía un problema similar. BTW – mysqlnd está disponible con 5.3, pero tiene que comstackrse. 5.4, está ahí por defecto.

En mi caso, pude conservar la mayor parte de mi código y hacerlo funcionar reemplazando lo siguiente

 $result = mysqli_stmt_get_result($stmt); // < -- doesn't work without mysqlnd while($row = mysqli_fetch_assoc($result)) { $cardName=$row['cardName']; ... } 

con

 $stmt->bind_result($dbCardId, $dbCardName); // < -- one param for each field returned while ($stmt->fetch()) { $cardName = $dbCardName; ... } 

Si se encuentra en una situación en la que no se le permite agregar mysqlnd, esto muestra cómo obtener datos en una matriz asociativa sin mysqli_stmt_get_result (). Mysqli – Enlazar resultados a una matriz