sql >> Database teknologi >  >> RDS >> Mysql

PHP Migrering fra mysql_* til mysqli_

Ok, så i den første funktion prøver du at erstatte

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

Lad os først gøre det klart, hvad dette gør:

  • angiv forespørgsel
  • hent resultatet
  • få 0. række ("1." på engelsk)
  • hent kolonne user_id

Gør nu dette trin-for-trin med 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'];

Du behøver ikke at angive rækken som fetch_assoc returnerer kun én.

Nu til den anden funktion

return (mysql_result(mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `username` = '$username' AND `password` = '$password'"), 0) ==1) ? $user_id : FALSE;
  • angiv forespørgsel
  • hent resultat
  • få 0. række
  • hvis dette er lig med 1:returner user_id , ellers FALSE

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

Men vent - hvorfor brugte jeg mysqli_fetch_row her hvorimod mysqli_fetch_assoc blev brugt ovenfor? RTM;)

Hvad har vi lært i dag? Kun fordi du kan skrive din kode så kort som muligt, betyder det ikke, at du skal. Hvis den originale kode var blevet delt lidt mere op, skulle overgangen til MySQLi have været ret nem, da man nemt kunne have fejlrettet mindre dele i stedet for et komplekst udtryk.




  1. Korrekt styring af databaseressourcer:markør og forbindelse

  2. Flere indsæt/opdater sætninger i trigger?

  3. Jeg har brug for hjælp til at konvertere T-SQL-forespørgsler til Oracle-understøttet forespørgsel

  4. Måder at gendanne data fra SQL Server Transaction Log File