Ouvrir deux tables en même temps
Résolu
Said_de_lyon
Messages postés
18
Date d'inscription
Statut
Membre
Dernière intervention
-
gardiendelanuit Messages postés 1770 Date d'inscription Statut Membre Dernière intervention -
gardiendelanuit Messages postés 1770 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Voici mon code qui me cause des problèmes :
Mon problème : $titre à pour résultat une valeur vide.
A chaque page marquée de la table "marque_page", il existe un id qui a un titre dans la table "livre".
Ce sont des livres dans la table "livre" avec des pages marquées dans la table "marque_page".
Je ne sélectionne que les champs dont j'ai besoin pour ce code.
Je pense que je ne peux pas déclarer $reponse2 sans fermer $reponse.
Ce qui me surprend.
Je n'en suis pas convaincu.
Et vous, qu'en pensez-vous.
Pouvez-vous m'aider.
Merci
Saïd
EDIT : Les infos hosts, data, username etc... ont été modifiées par la modération
Voici mon code qui me cause des problèmes :
<?php $hostname = "db123456789.db.ccm.com"; $database = "db123456789"; $username = "dbo123456789"; $password = ""; $bdd = mysqli_connect("$hostname", "$username", "$password", "$database"); if (! $bdd) {die ('Erreur: '. mysqli_error()); } $pseudo = $_POST['pseudo']; $motdepasse = $_POST['motdepasse']; $pseudo ="monpseudo"; $motdepasse="1234567"; $oui = 'Oui'; $i = 0; $data_tab_livres = array(); $reponse = mysqli_prepare($bdd,'SELECT id FROM marque_page WHERE pseudo=? AND motdepasse=? AND pagemarquee=?'); mysqli_stmt_bind_param($reponse, 'sss', $pseudo, $motdepasse, $oui); mysqli_stmt_execute($reponse); mysqli_stmt_bind_result($reponse, $id); while (mysqli_stmt_fetch($reponse)) { $i++; $reponse2 = mysqli_prepare($bdd, 'SELECT id , titre FROM livre WHERE id=?'); mysqli_stmt_bind_param($reponse2, 'i', $id); mysqli_stmt_execute($reponse2); mysqli_stmt_bind_result($reponse2, $id, $titre); mysqli_stmt_fetch($reponse2); $data_tab_livres[$i] = array('id' => $id , 'titre' => $titre); mysqli_close($reponse2); } mysqli_stmt_close($reponse); echo json_encode($data_tab_livres); ?>
Mon problème : $titre à pour résultat une valeur vide.
A chaque page marquée de la table "marque_page", il existe un id qui a un titre dans la table "livre".
Ce sont des livres dans la table "livre" avec des pages marquées dans la table "marque_page".
Je ne sélectionne que les champs dont j'ai besoin pour ce code.
Je pense que je ne peux pas déclarer $reponse2 sans fermer $reponse.
Ce qui me surprend.
Je n'en suis pas convaincu.
Et vous, qu'en pensez-vous.
Pouvez-vous m'aider.
Merci
Saïd
EDIT : Les infos hosts, data, username etc... ont été modifiées par la modération
A voir également:
- Ouvrir deux tables en même temps
- Comment ouvrir un fichier epub ? - Guide
- Renommer plusieurs fichiers en même temps - Guide
- Ouvrir fichier .bin - Guide
- Ouvrir fichier .dat - Guide
- Comment ouvrir un fichier docx ? - Guide
2 réponses
Bonjour,
Essaye en ne faisant qu'une seul requête. Ce sera plus simple.
Un truc du genre
SELECT id , titre FROM livre WHERE id in (SELECT id FROM marque_page WHERE pseudo=? AND motdepasse=? AND pagemarquee=?)
Essaye en ne faisant qu'une seul requête. Ce sera plus simple.
Un truc du genre
SELECT id , titre FROM livre WHERE id in (SELECT id FROM marque_page WHERE pseudo=? AND motdepasse=? AND pagemarquee=?)
Bonsoir,
Si j'ai bien compris c'est deux tables qui ont un champs commun? Pourquoi pas un INNER JOIN alors?
Si j'ai bien compris c'est deux tables qui ont un champs commun? Pourquoi pas un INNER JOIN alors?
$reponse = mysqli_prepare($bdd,'SELECT id, titre FROM marque_page WHERE pseudo=? AND motdepasse=? AND pagemarquee=?
INNER JOIN livre ON marque_page.id = livre.id');
mysqli_stmt_bind_param($reponse, 'sss', $pseudo, $motdepasse, $oui);
mysqli_stmt_execute($reponse);
mysqli_stmt_bind_result($reponse, $id, $titre);
Peut-on faire une requête préparé avec INNER JOIN comme je fait.
Car c'est pire qu'avant. Je n'ai qu'une table vide comme résultat