Les instructions préparées par PHP (pour l'accès à la base de données) sont excellentes. Non seulement ils aident à protéger vos requêtes de base de données, mais ils sont particulièrement plus efficaces pour les produits plus volumineux. Cependant, certains problèmes semblent rendre ces méthodes moins flexibles que nous le souhaiterions. D’une part, nous devons utiliser la méthode bind_result
et transmettre un nombre spécifique de variables. Mais que se passe-t-il lorsque ce code est dans une classe et que l’on ne sait pas immédiatement combien de variables passer ? Heureusement, il existe une solution ! Je vais vous montrer ce que c'est dans le didacticiel vidéo d'aujourd'hui.
Membres Premium : Téléchargez cette vidéo (vous devez vous connecter)
Abonnez-vous à notre page YouTube pour regarder tous les tutoriels vidéo !
<?php function read() { $parameters = array(); $results = array(); $mysql = new mysqli('localhost', 'root', 'root', 'db') or die('There was a problem connecting to the database'); $stmt = $mysql->prepare('SELECT body FROM posts') or die('Problem preparing query'); $stmt->execute(); $meta = $stmt->result_metadata(); while ( $field = $meta->fetch_field() ) { $parameters[] = &$row[$field->name]; } call_user_func_array(array($stmt, 'bind_result'), $parameters); while ( $stmt->fetch() ) { $x = array(); foreach( $row as $key => $val ) { $x[$key] = $val; } $results[] = $x; } return $results; } $results = read(); ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>untitled</title> </head> <body> <?php foreach ($results as $row) : ?> <p> <?php echo $row['body']; ?> </p> <?php endforeach; ?> </body> </html>
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!