2010-05-07 6 views
0
$request = 'SELECT * FROM flight WHERE Id = \''.$_SESSION['LFLightRadio'].'\''; 
    $data = mysql_fetch_array(mysql_query($request, $SQL)); 
    echo '<table class="table">'; 
    foreach($data as $key => $value) { 
     echo '<th class="head" align="center" height="19">'.$key.'</th>'; 
    } 
    echo '<tr>'; 
    foreach($data as $key => $value) { 
     echo '<td class="cell" align="center" height="19">'.$value.'</td>'; 
    } 
    echo '</tr></table>'; 

Je sais que la valeur LFlightRadio est définie et est une valeur renvoyée par la valeur Id d'une ligne précédemment retournée de la base de données de vol. Donc, dans "vol", un enregistrement existe certainement avec cette Id. Mais, cela me donne toujours un résultat non-tableau, de sorte que lorsque j'essaie d'utiliser foreach dessus, il y a des erreurs. Suggestions?SQL renvoie une valeur non-tableau dans PHP

+1

Peut-être faire 'var_dump ($ data)' et voir ce qu'il dit? –

Répondre

1

Vous avez une mauvaise mise-majuscule dans votre code.

$_SESSION['LFLightRadio'] est très probablement destiné à être $_SESSION['LFlightRadio']

clés du tableau sont sensibles à la casse.

2

avant la echo '<table class="table">';, ajouter:

echo '<br>$_SESSION[\'LFLightRadio\']="'.$_SESSION['LFLightRadio'].'"<br>'; 

pour vous assurer que vous avez réellement une valeur à comparer à flight.Id dans la requête. La façon dont vous faites cela est une énorme attaque en attente de se produire! Voir cette question: mysql_real_escape_string() for $_SESSION variables necessary?

EDIT

ajouter ceci avant le echo '<table class="table">';:

echo '<br>$request="'.$request.'"<br>'; 

exécution de cette requête sur la base de données, sont des lignes retournées?

+0

Peu importe - ce n'est pas un site public - et j'ai déjà fait en sorte que LFlightRadio existe, parce que je l'ai vérifié à plusieurs reprises dans les déclarations que je coupe. – Puppy

+2

Lorsque vous codez un site public, vous retombez dans cette habitude. –

+0

Eh bien, c'était révélateur. $ _SESSION ['LFlightRadio'] est 8. Mais la requête $ construite ne contient pas réellement cette valeur. – Puppy

0
$var = $_SESSION['LFlightRadio']; 
    $request = "SELECT * FROM flight WHERE Id = '$var'"; 
    $data = mysql_fetch_array(mysql_query($request, $SQL)); 

Cela fonctionne! Pour une raison quelconque, lorsque je l'ai concaténé directement, il n'a pas réellement ajouté la variable dans la chaîne. Mais quand j'ai fait ça, ça a été mis en place et j'ai obtenu le résultat escompté.

+1

La concaténation aurait dû fonctionner. C'est probablement une faute de frappe. Notez la différence de cas entre "LFlightRadio" et "LFLightRadio". –

+0

Vous voyez ce que vous voulez voir, plutôt que ce qu'il y a, je suppose. – Puppy

1

Vouliez-vous dire utiliser

mysql_fetch_assoc 

au lieu de mysql_fetch_array? Tableau aurait des clés comme 0,1,2 ...

+0

Il a les deux, en fait. Je viens de changer d'assoc, parce que je vidais des doublons sur l'écran. – Puppy

Questions connexes