2010-06-22 6 views
0

Je stocke un tas d'ID utilisateur à l'intérieur d'une base de données mySQL avec d'autres données relatives à chaque uid, mais maintenant je voudrais mettre en place une vérification au début du programme qui va essentiellement comme ça, si l'utilisateur existe déjà, obtenez les champs spécifiés pour cet utilisateur spécifique et assignez-les aux variables, sinon, renvoyez null.Recherche dans une base de données mySQL

$query = mySQL query; 

if ($query){ 
    do this... 
}else{ 
    do that... 
}; 

Je suppose que cela ressemblerait à quelque chose comme ça?

Je suis un peu incertain de ma syntaxe et je ne connais pas beaucoup mySQL, c'est pourquoi je demande de l'aide, merci d'avance!

Répondre

1

Voici quelque chose pour vous lancer, en supposant que vous êtes connecté à la base de données ..

$query = "SELECT name, email FROM user WHERE id = $id"; 
$result = mysql_query($query); 
if ($arr = mysql_fetch_assoc($result)) 
{ 
    // either return $arr or build something else with 
    // individual column values, something like this 
    // (would require you to define a User class) 
    $name = $arr['name']; 
    $email = $arr['email']; 
    return new User($name, $email); 
} 
else 
{ 
    return null; 
} 

D'accord, sur demande, assurez-vous de faire quelque chose comme ça avec toutes les variables (que vous ne faites pas le contrôle de 100% par rapport) avant de les insérer dans vos requêtes sQL:

$id = mysql_real_escape_string($id); 

Cependant, je dois dire que dans mes applications, l'utilisateur ids proviennent de sources que j'ai confiance - pas de l'entrée de l'utilisateur.

+2

Veuillez le rendre résistant à l'injection SQL. – Anax

1

Pas tout à fait. Demandez à la requête de tirer tous les champs désirés WHERE uid=:uid, puis vérifiez le nombre de lignes retournées via mysql_num_rows() ou similaire. Sur 0 return null, sinon extraire les valeurs de la ligne.

1
$query = "SELECT `name`, `email` FROM `user` WHERE `id` = '$id' LIMIT 1"; 
$sql = mysql_query($query); 
$count = mysql_num_rows($sql); 

if ($count >= 1) 
{ 
    $name = mysql_result($sql,0,'name'); 
    $email = mysql_result($sql,0,'email'); 
    return /*whatever u need to return*/; 
} 

aussi u ne doit jamais compter quoi que ce soit dans if() en particulier dans les cycles.

Questions connexes