Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Migracja PHP z mysql_* do mysqli_

Ok, więc w pierwszej funkcji, którą próbujesz zastąpić

return mysql_result(mysql_query("SELECT `user_id` FROM `users` WHERE `username` = '$username'"), 0, 'user_id');

Najpierw wyjaśnijmy, co to robi:

  • określ zapytanie
  • pobierz wynik
  • uzyskaj 0. wiersz („1st” po angielsku)
  • pobierz kolumnę user_id

Teraz zrób to krok po kroku za pomocą 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'];

Nie musisz określać wiersza jako fetch_assoc zwraca tylko jeden.

Teraz druga funkcja

return (mysql_result(mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `username` = '$username' AND `password` = '$password'"), 0) ==1) ? $user_id : FALSE;
  • określ zapytanie
  • pobierz wynik
  • uzyskaj 0. wiersz
  • jeśli to równa się 1:zwróć user_id , w przeciwnym razie FALSE

Teraz z 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;

Ale czekaj - dlaczego użyłem mysqli_fetch_row tutaj, podczas gdy mysqli_fetch_assoc został użyty powyżej? RTM;)

Czego się dzisiaj nauczyliśmy? Tylko dlatego, że możesz napisać swój kod tak krótko, jak to możliwe, nie oznacza, że ​​powinieneś. Gdyby oryginalny kod został nieco bardziej podzielony, przejście do MySQLi powinno być dość łatwe, ponieważ można łatwo debugować mniejsze części zamiast złożonego wyrażenia.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak uzyskać dane z innej tabeli za pomocą danych kolumnowych z innej tabeli?

  2. Jaki jest najprostszy sposób uzyskania wszystkich rodziców rekordu przy użyciu modelu id / parent_id w mysql/php?

  3. Dlaczego MySql nie optymalizuje automatycznie zapytania BETWEEN?

  4. mysql nie można wstawić, ponieważ nie ma wartości domyślnej?

  5. Jak uzyskać wstawiony identyfikator za pomocą Spring Jdbctemplate.update(String sql, obj...args)