sql >> Base de Datos >  >> RDS >> Mysql

PHP Migrando de mysql_* a mysqli_

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 contrario FALSE

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.