2010-10-13 2 views
0

J'ai une requête $sqlStr4 que « sélectionne » ces champs à partir d'une base de données MySQL:Donner une variable une valeur de 1 ou 0 selon que une autre variable apparaît dans des résultats de requête

loginid 
username 
created 

La requête $sqlStr4 est limitée à 10 lignes/résultats.

J'ai aussi la variable suivante:

$u = $_SESSION['username']; 

je voudrais attribuer une autre variable $topten une valeur de 1 si $u est égal à l'un des dix username champs renvoyés par la requête $sqlStr4, et une valeur de 0 si ça ne fait pas.

Comment est-ce que je peux faire ceci?

Merci à l'avance,

John

Répondre

0

Utilisation:

<?php 

$u = $_SESSION['username']; 
$topten = 0; 

$result = mysql_query($sqlStr4); 

while ($row = mysql_fetch_assoc($result)) { 
    if ($row['username'] == $u) { 
    $topten = 1; 
    break; 
    } 
} 

mysql_free_result($result); 
?> 
0

Si vous avez collé la requête, nous serions en mesure de fournir une version fixe. Vous pouvez le faire de plusieurs façons, mais l'une serait d'ajouter une colonne à votre requête et d'utiliser une instruction CASE.

select *, CASE WHEN username = '$u' THEN 1 ELSE 0 END as topten 
from ... 

Ceci est juste un exemple .. évidemment pour éviter l'injection SQL, vous devez paramétrer ou utiliser mysql_real_escape_string(), ou une procédure stockée, etc etc ...

EDIT: Je vois que vous voulez la variable doit être en PHP ... donc vous devrez parcourir le tableau pour vérifier chacun d'entre eux. Quel est le problème que vous rencontrez ...

$topten = 0; 
if ($result) { 
    while ($record = mysql_fetch_array($result)) { 
     if ($record['username'] == $u) $topten = 1; 
    } 
} 
0

pourrait essayer quelque chose comme ça ...

while ($row = mysql_fetch_assoc($sqlStr4)) 
{ 
    $topten = ($u == $row['username']) ? 1 : 0; 
    // the rest of your processing code here 
} 

Il peut y avoir de meilleures solutions pour ta situation. Serait plus facile si vous avez posté du code!

+0

Cela réinitialisera la valeur '$ topten' à zéro si les enregistrements suivants ne correspondent pas. –

+0

@OMG - cela dépend totalement de ce que le PO veut. S'ils vérifient simplement ceci, alors ils peuvent simplement utiliser 'mysql_num_rows()' sur une requête. J'ai fait l'hypothèse qu'il veut faire une boucle et faire quelque chose avec les lignes, donc il voudrait que la valeur soit réinitialisée à chaque fois. Un simple 'if ($ topten) break;' pourrait être ajouté si cette vérification était tout ce que l'OP voulait faire, mais dans ce cas je recommanderais qu'il repense sa requête! – chigley

Questions connexes