Comment répliquer la fonctionnalité de la fonction mysql_result() de PHP dans MySQLi
La fonction mysql_result(), couramment utilisée dans le code PHP existant, permet aux développeurs d'accéder rapidement à des données spécifiques à partir d'un résultat de requête MySQL. Cependant, cette fonction n'est pas nativement prise en charge dans MySQLi, l'extension améliorée et recommandée pour interagir avec les bases de données MySQL.
Approche alternative avec la récupération des lignes
Une approche courante pour récupérer les données des résultats de la requête MySQLi doivent récupérer la ligne correspondante à l'aide de la méthode fetch_assoc(). Voici un exemple :
if ($r && $r->num_rows) { $row = $r->fetch_assoc(); $blarg = $row['blah']; }
Cette approche implique plusieurs lignes et peut être moins efficace que l'utilisation d'une fonction dédiée comme mysql_result().
Fonction équivalente personnalisée
Pour reproduire la fonctionnalité de mysql_result() dans MySQLi, vous pouvez créer une fonction personnalisée comme indiqué ci-dessous :
function mysqli_result($res,$row=0,$col=0){ $numrows = mysqli_num_rows($res); if ($numrows && $row <= ($numrows-1) && $row >=0){ mysqli_data_seek($res,$row); $resrow = (is_numeric($col)) ? mysqli_fetch_row($res) : mysqli_fetch_assoc($res); if (isset($resrow[$col])){ return $resrow[$col]; } } return false; }
Cette fonction accepte les indices de lignes et de colonnes comme paramètres et renvoie les données correspondantes si elles existent. Il gère également les erreurs potentielles liées aux requêtes hors limites.
Utilisation :
La fonction mysqli_result() peut être utilisée de la même manière que mysql_result() :
if ($r && $r->num_rows) $blarg = mysqli_result($r, 0, 'blah');
Avantages et Limitations
La fonction personnalisée mysqli_result() permet un code plus concis et réduit le nombre de lignes requises pour récupérer les données des résultats de requête MySQLi. Cependant, il convient de noter que cette fonction repose sur l'invocation de fonction dynamique de PHP et peut entraîner une légère pénalité de performances par rapport à l'implémentation originale de mysql_result().
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!