Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

PHP Migrando de mysql_* para mysqli_


Ok, então na primeira função você está tentando substituir
return mysql_result(mysql_query("SELECT `user_id` FROM `users` WHERE `username` = '$username'"), 0, 'user_id');

Vamos primeiro deixar claro o que isso faz:
  • especificar consulta
  • busque o resultado
  • obter 0. linha ("1º" em inglês)
  • obter coluna user_id

Agora faça isso passo a passo com 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'];

Você não precisa especificar a linha como fetch_assoc retorna apenas um.

Agora para a segunda função
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
  • obter 0. linha
  • se for igual a 1:retorne user_id , caso contrário FALSE

Agora com 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;

Mas espere - por que eu usei mysqli_fetch_row aqui enquanto mysqli_fetch_assoc foi usado acima? RTM;)

O que aprendemos hoje? Só porque você pode escrever seu código o mais curto possível não significa que você deveria. Se o código original tivesse sido dividido um pouco mais, a transição para o MySQLi deveria ter sido bem fácil, pois você poderia facilmente depurar partes menores em vez de uma expressão complexa.