mysqli_query mysqli_num_rows mysqli_fetch_array mysqli_fetch_all fetch_array ejemplo consulta assoc php sql mysqli prepared-statement

php - mysqli_num_rows - estado preparado mysqli no devuelve filas



mysqli_fetch_array ejemplo (1)

Extendiendo de comentario:

Debes usar mysql_stmt::store_result() para poder usar mysqli_stmt::num_rows :

$stmt=$conn->stmt_init(); $stmt->prepare(''SELECT username FROM accounts WHERE username LIKE ?''); $compquery=''%''.$_POST[''query''].''%''; $stmt->bind_param(''s'',$compquery); $stmt->execute(); $stmt->store_result();

Tengo un código php con una declaración preparada. Se llama a través de Ajax en javascript. Estoy seguro de que hay una cuenta llamada mark (sin mayúsculas) en la tabla de cuentas, pero cuando llamo a esto con $ _POST [''query''] establecido en m, encuentra que $ stmt-> num_rows === 0 es verdadero. No se pueden ver errores, ¡simplemente no funciona! Como puede ver, está haciendo eco del contenido en una tabla. Intenté esta consulta en phpMyAdmin: SELECCIONAR nombre de usuario FROM cuentas WHERE username LIKE ''% m%'' y funcionó bien. Creé este código para buscar una base de datos mysql para nombres de usuario. En caso de que se lo pregunte, $ conn es un objeto mysqli válido definido en el archivo de inclusión.

<?php require_once(''./include.php''); $stmt=$conn->stmt_init(); $stmt->prepare(''SELECT username FROM accounts WHERE username LIKE ?''); $compquery=''%''.$_POST[''query''].''%''; $stmt->bind_param(''s'',$compquery); $stmt->execute(); echo ''<tr><td>''; if($stmt->num_rows!==0){ $stmt->bind_result($name); while($stmt->fetch()){ echo "$name</td></tr><tr><td>"; } echo ''</td></tr>''; } else echo ''No Results Found</td></tr>'';