Je suis un peu nouveau à la POO, mais je joue avec depuis environ un mois maintenant. Habituellement, je crée une classe appelée Mysql qui a une fonction __construct qui se connecte directement à une base de données. Et après cela, j'ai beaucoup de différentes fonctions qui obtient ou insère des données dans différentes tables.PHP/Mysql - Sélection dynamique des données?
Sur le bus de la maison aujourd'hui, j'ai commencé à réfléchir et je suis venu avec une idée brillante qui le rendrait moins encombré. Mon idée est d'utiliser une seule fonction qui sélectionne les données (et une pour l'insertion), et en fonction de la façon dont la requête est passée, elle va sélectionner différentes données provenant de différentes tables. Bonne droite?
Mais je suis coincé ici. Je ne suis pas sûr du tout comment y parvenir. J'ai une petite idée de comment cela pourrait fonctionner, mais je ne sais pas comment je lierais les résultats, ou les chercher dans un tableau. La requête sera créée dans une autre méthode, puis transmise dans la fonction select/insert de la classe Mysql.
J'ai dessiné un «croquis» sur comment je pense que cela peut fonctionner. La voici:
Bien sûr, la fonction ci-dessous sera placée dans la classe Mysql et aura déjà une connexion à une base de données.
// This is an example query that could be passed in.
$query = "SELECT * FROM table WHERE id=150";
function select_data($query) {
if ($smtp = $this->conn->prepare($query)) {
$smtp->execute();
$smtp->bind_results(What happens here?);
if ($smtp->fetch()) {
foreach (fetched_row? as $key => $value) {
$return[] = $key => $value;
}
return $return;
}
else return NULL;
}
else return $this->conn->error;
}
Merci beaucoup à tous ceux qui peuvent me montrer comment cela peut être réalisé.
Je ne vais pas être en utilisant pour ce joint, je pense. Mais même si je le fais, comment cela ne fonctionnerait-il pas? La requête sera toujours similaire à celle mentionnée dans mon premier post, en jetant peut-être une jointure si ça marche ... Ouais, je voulais dire STMT, pas SMTP, hehe. Merci! – Nike