Mysql
 sql >> Datenbank >  >> RDS >> Mysql

PHP-Migration von mysql_* nach mysqli_

Ok, also versuchen Sie in der ersten Funktion,

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

Lassen Sie uns zuerst klarstellen, was das bewirkt:

  • Abfrage angeben
  • Ergebnis abrufen
  • erhalte 0. Zeile ("1st" auf Englisch)
  • Spalte user_id erhalten

Führen Sie dies nun Schritt für Schritt mit mysqli_ durch :

//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'];

Sie müssen die Zeile nicht als fetch_assoc angeben gibt nur einen zurück.

Nun zur zweiten Funktion

return (mysql_result(mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `username` = '$username' AND `password` = '$password'"), 0) ==1) ? $user_id : FALSE;
  • Abfrage angeben
  • Ergebnis abrufen
  • erhalte 0. Zeile
  • wenn dies gleich 1 ist:gib user_id zurück , sonst FALSE

Jetzt mit 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;

Aber warten Sie - warum habe ich mysqli_fetch_row verwendet hier hingegen mysqli_fetch_assoc wurde oben verwendet? RTM;)

Was haben wir heute gelernt? Nur weil Sie Ihren Code so kurz wie möglich schreiben können, bedeutet das nicht, dass Sie es tun sollten. Wenn der ursprüngliche Code etwas mehr aufgeteilt worden wäre, hätte der Übergang zu MySQLi ziemlich einfach sein sollen, da Sie kleinere Teile anstelle eines komplexen Ausdrucks leicht hätten debuggen können.