Ok, quindi nella prima funzione stai cercando di sostituire
return mysql_result(mysql_query("SELECT `user_id` FROM `users` WHERE `username` = '$username'"), 0, 'user_id');
Per prima cosa chiariamo cosa fa:
- specifica la query
- recupera il risultato
- ottieni 0. riga ("1st" in inglese)
- ottieni la colonna
user_id
Ora esegui questa operazione passo dopo passo con 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'];
Non è necessario specificare la riga come fetch_assoc
ne restituisce solo uno.
Ora per la seconda funzione
return (mysql_result(mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `username` = '$username' AND `password` = '$password'"), 0) ==1) ? $user_id : FALSE;
- specifica la query
- Recupera il risultato
- ottieni 0. riga
- se questo è uguale a 1:restituisce
user_id
, altrimentiFALSE
Ora con 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;
Ma aspetta, perché ho usato mysqli_fetch_row
qui mentre mysqli_fetch_assoc
è stato usato sopra? RTM;)
Cosa abbiamo imparato oggi? Solo perché puoi scrivere il tuo codice il più breve possibile non significa che dovresti. Se il codice originale fosse stato suddiviso un po' di più, la transizione a MySQLi sarebbe stata abbastanza semplice, poiché avresti potuto facilmente eseguire il debug di parti più piccole invece di un'espressione complessa.