SQL在PHP中返回非数组值

时间:2010-05-07 17:28:12

标签: php sql

    $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>';

我知道LFlightRadio值已设置,并且是先前从航班数据库返回的行的Id值返回的值。所以在“飞行”中,这个Id肯定存在记录。但是,这仍然给我一个非数组结果,所以当我尝试使用foreach时,它会出错。建议?

4 个答案:

答案 0 :(得分:2)

echo '<table class="table">';之前

,添加:

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

确保您确实有一个值可以与查询中的flight.Id进行比较。你这样做的方式是一个巨大的SQL injection攻击等待发生!请参阅此问题:mysql_real_escape_string() for $_SESSION variables necessary?

修改

echo '<table class="table">';

之前添加此内容
echo '<br>$request="'.$request.'"<br>';

在数据库上运行该查询,是否返回了任何行?

答案 1 :(得分:1)

您的意思是使用

mysql_fetch_assoc

而不是mysql_fetch_array?数组会有像0,1,2 ......

这样的键

答案 2 :(得分:1)

您的代码中存在错误大写。

$_SESSION['LFLightRadio']最有可能是$_SESSION['LFlightRadio']

数组键区分大小写。

答案 3 :(得分:0)

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

这个有效!出于某种原因,当我直接连接它时,它实际上并没有将变量添加到字符串中。但是当我这样做的时候,它就被投入了,我得到了预期的结果。