sql >> Database >  >> RDS >> Mysql

PHP migreren van mysql_* naar mysqli_

Ok, dus in de eerste functie die je probeert te vervangen

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

Laten we eerst duidelijk maken wat dit doet:

  • zoekopdracht specificeren
  • haal het resultaat op
  • haal 0. rij ("1e" in het Engels)
  • krijg kolom user_id

Doe dit nu stap voor stap met 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'];

U hoeft de rij niet op te geven als fetch_assoc geeft er maar één terug.

Nu voor de tweede functie

return (mysql_result(mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `username` = '$username' AND `password` = '$password'"), 0) ==1) ? $user_id : FALSE;
  • zoekopdracht specificeren
  • resultaat ophalen
  • haal 0. rij
  • als dit gelijk is aan 1:retourneer user_id , anders FALSE

Nu met 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;

Maar wacht - waarom heb ik mysqli_fetch_row gebruikt hier terwijl mysqli_fetch_assoc hierboven gebruikt? RTM;)

Wat hebben we vandaag geleerd? Alleen omdat u uw code zo kort mogelijk kunt schrijven, betekent niet dat u dat moet doen. Als de originele code wat meer was opgesplitst, had de overgang naar MySQLi vrij eenvoudig moeten zijn, omdat je gemakkelijk kleinere delen had kunnen debuggen in plaats van een complexe uitdrukking.




  1. PostgreSQL:ordinale rangorde (rij-index?) efficiënt verkrijgen

  2. Rij-ID van een SQLite FTS3-tabel ophalen

  3. Aantal rijen beïnvloed door een UPDATE in PL/SQL

  4. Vraag om het meest recente record en (in geval van gelijkspel) met de hogere waarde of percentage per kaart en service