Ok, entonces en la primera función que está tratando de reemplazar
return mysql_result(mysql_query("SELECT `user_id` FROM `users` WHERE `username` = '$username'"), 0, 'user_id');
Primero aclaremos qué hace esto:
- especificar consulta
- obtener el resultado
- obtener 0. fila ("1st" en inglés)
- obtener columna
user_id
Ahora haz esto paso a paso con mysqli_
:
//specify query
$result = mysqli_query(connect(),"SELECT `user_id` FROM `users` WHERE `username` = '$username'");
//fetch result
$row = mysqli_fetch_assoc($result);
//get column
return $row['user_id'];
No necesita especificar la fila como fetch_assoc
devuelve solo uno.
Ahora para la segunda función
return (mysql_result(mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `username` = '$username' AND `password` = '$password'"), 0) ==1) ? $user_id : FALSE;
- especificar consulta
- buscar resultado
- obtener 0. fila
- si esto es igual a 1:devolver
user_id
, de lo contrarioFALSE
Ahora con mysqli_
:
//specify query
$result = mysqli_query(connect(),"SELECT COUNT(`user_id`) FROM `users` WHERE `username` = '$username' AND `password` = '$password'");
//fetch result
$row = mysqli_fetch_row($result);
//if first returned column is equal to 1 return $user_id
//otherwise FALSE
return ($row[0]==1) ? $user_id : FALSE;
Pero espera, ¿por qué usé mysqli_fetch_row
?
aquí mientras que mysqli_fetch_assoc
se usó arriba? RTM;)
¿Qué hemos aprendido hoy? El hecho de que pueda escribir su código lo más corto posible no significa que deba hacerlo. Si el código original se hubiera dividido un poco más, la transición a MySQLi debería haber sido bastante fácil, ya que podría haber depurado fácilmente partes más pequeñas en lugar de una expresión compleja.