¿Porqué la función affected_rows de PHP no me devuelve la cantidad de registros en mi consulta SELECT realizada en MySQL?

Me encuentro haciendo una pequeña consulta preparada con la sentencia SELECT a mi BD en MySQL y para validar si funciona estoy usando la función “affected_rows” con el estilo POO. Sucede que almaceno la cantidad de registros que devuelve la función “affected_rows” en una variable la cual uso en un condicional “if” y dependiendo del resultado realiza una acción u otra. Ahora cuando pruebo el código siempre me devuelve -1 y la verdad nose a que se deba este resultado, ya que he probado la misma consulta con POO pero sin prepararla y me muestra los registros encontrados sin problemas. Asimimo quisiera aclarar que he leído el manual de PHP y dice que la función “affected_rows” funciona de forma similar a la función “num_rows” con la única diferencia que la primera se utiliza como método de la conexión mientras que la segunda se usa como método del resulset quiere decir con la variable donde se almacena el array que devuelve la consulta. Soy nuevo en PHP y lo de consultas preparadas en nuevo para mí, espero puedan ayudarme. Mi código es el siguiente:

Formulario de búsqueda HTML

<!DOCTYPE html> <html> <head>     <title>::Página Búsqueda::</title>     <meta charset="utf-8"> </head> <body> <form method="get" action="busqueda_alumno_querypreparada.php">     <label>Ingrese nombre</label>     <input type="text" name="busqueda">     <input type="submit" name="buscar" value="Buscar!"> </form> </body> </html> 

Código PHP

<?php $  conexion=new mysqli("localhost","root","","curso_php");  $  busqueda=$  _GET['busqueda'];  if ($  conexion->connect_errno) {     echo "Error de Conexión: ".$  conexion->error; } $  conexion->set_charset("utf8");  $  consulta="SELECT DNI,APELLIDO,NOMBRES FROM ALUMNO WHERE NOMBRES=?"; $  datos=$  conexion->prepare($  consulta); $  ok=$  datos->bind_param('s',$  busqueda);//Devuelve TRUE O FALSE el $  ok es opcional para validación $  ok=$  datos->execute();//Devuelve TRUE O FALSE  $  registros=$  conexion->affected_rows;  if ($  registros>0) {     //Aquí enlazamos cada campo que devuelve la consulta con un parametro en el mismo orden que lo creamos     $  ok=$  datos->bind_result($  dni,$  apellido,$  nombres);//Devuelve TRUE O FALSE     while ($  datos->fetch()) {     echo "DNI: ".$  dni."<br>";     echo "Apellido: ".$  apellido."<br>";     echo "Nombre: ".$  nombres."<br>"."<br>";     }     echo "Cantidad Registros: ".$  registros; }else{     echo "Cantidad Registros: ".$  registros."<br>";//Sirve para determinar si devuelve 0 ó -1=error     echo "No se encontraron coincidencias!"; } $  datos->close(); $  conexion->close(); ?>