Ouvrir deux tables en même temps
Résolu
Said_de_lyon
Messages postés
22
Statut
Membre
-
gardiendelanuit Messages postés 1772 Date d'inscription Statut Membre Dernière intervention -
gardiendelanuit Messages postés 1772 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
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=?) -
Bonsoir,
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 -
-