2011-08-21 5 views
1

J'ai un site Web, et l'utilisateur vient de se connecter et il les redirige vers le tableau de bord de l'utilisateur. J'ai l'user_id dans une SESSION afin que je puisse l'utiliser pour mes requêtes SELECT pour saisir d'autres informations sur l'utilisateur.Comprendre les instructions PHP préparées

Ma question est, comment puis-je utiliser Prepared Statments pour saisir simplement les variables dont j'ai besoin pour cette page, sans utiliser une instruction foreach ou une instruction while. Ce sera juste pour cet utilisateur spécifique connecté, ne pas afficher des informations pour plusieurs utilisateurs.

Chaque exemple, je lève les yeux est comme ceci:

$query = "SELECT Name, CountryCode FROM City ORDER by ID DESC LIMIT 150,5"; 

if ($stmt = $mysqli->prepare($query)) { 

/* execute statement */ 
$stmt->execute(); 

/* bind result variables */ 
$stmt->bind_result($name, $code); 

/* fetch values */ 
while ($stmt->fetch()) { 
    printf ("%s (%s)\n", $name, $code); 
} 

/* close statement */ 
$stmt->close(); 
} 

/* close connection */ 
$mysqli->close(); 

-t-il d'être dans une déclaration while? J'ai juste besoin des variables en haut, donc je peux afficher ma page normale et ensuite utiliser les variables quand j'en ai besoin. Cela a-t-il du sens? Je cherche simplement à en savoir plus et à mieux comprendre comment cela fonctionne.

+0

Pouvez-vous préciser ce que vous entendez par «variables en haut»? –

+0

Ce n'est pas un bon exemple d'instructions préparées. Il s'agit simplement d'un moyen sophistiqué de récupérer les ensembles de résultats directement dans la portée de la variable locale. – mario

+1

Cette instruction 'while' consiste simplement à saisir chaque enregistrement un à la fois. Si vous ne récupérez qu'un seul enregistrement, vous n'avez pas besoin d'une boucle du tout. La manière dont vous récupérez toutes les informations nécessaires pour cet utilisateur dépend de la manière dont les données utilisateur sont stockées dans votre base de données. Pouvez-vous nous montrer la structure de votre base de données? – AgentConundrum

Répondre

1

Si vous avez juste besoin le dossier haut:

/* fetch values */ 
$stmt->fetch(); 
printf ("%s (%s)\n", $name, $code); 

$stmt->fetch va chercher la première ligne, vous n'avez pas besoin while sauf si vous voulez continuer à travers toutes les lignes.

+0

Merci. J'ai essayé cela une fois et cela n'a pas fonctionné mais je me suis rendu compte que c'était parce que je faisais écho aux variables comme et continuais à recevoir une erreur et ensuite changé en et ça a marché! – Drew

+0

Woop! Heureux de vous aider. –

Questions connexes