0

我正在尝试从表中检索几个不同的值。我让它工作了,但它实际上只是向我发送了它调用的最后一个值。我做了几件不同的事情,试图调用我所有的价值观,但它不起作用。这就是我所拥有的。

$infoChanger = $_GET['changer'];
$username = $_GET['user'];
$sql="SELECT * FROM Login_Info WHERE user='".$username."'";
$r = mysql_query($sql,$con);
$row = mysql_fetch_array($r);

if ($row[7] != "") 
{
    if ( $infoChanger == 1 ) {
        echo $row['user'];
    }
    else if ( $infoChanger == 2 ) {
        echo $row['health'];
    }
    else if ( $infoChanger == 3 ) {
        echo $row['maxHealth'];
    }
    else if ( $infoChanger == 4 ) {
        echo $row['gold'];
    }
    else if ( $infoChanger == 5 ) {
        echo $row['xp'];
    }
    else if ( $infoChanger == 6 ) {
        echo $row['xpRequire'];
    }
    else if ( $infoChanger == 7 ) {
        echo $row['eg'];
    }
}
else
{
    echo "false";
}

这是我最后一次尝试这样做。但它只返回最后一个“eg”的值。我把它设置在一个循环上,在这里调用是我用来调用它的。

function recallCharInfo(user)
{
    xmlHttp=GetXmlHttpObject()
    if (xmlHttp==null)
    {
      alert ("Browser does not support HTTP Request")
      return
    }
    while (infoChanger < 7) {
      infoChanger += 1;
      xmlHttp=GetXmlHttpObject();
      var url="charinfo.php?user=" + user + "&changer=" + infoChanger;
      xmlHttp.onreadystatechange=stateChanged
      xmlHttp.open("GET",url,true)
      xmlHttp.send(null);
    }
}

我试图让它们全部显示,但只是不正常工作,我不想为我试图调用的每个值创建一个函数。有谁知道这有什么问题还是我做错了?

4

1 回答 1

0

对于您的特定情况,数组索引从 0 开始,因此如果这些是数组中的所有行 $row[7] 将永远不会是任何东西,并且总是会返回 false。

您的初始检查应该是:

if($row !== false && $row[6] != "") 

对于循环的替代解决方案:

你的php可以是:

$infoChanger = $_GET['changer'];
$username = $_GET['user'];
$sql="SELECT * FROM Login_Info WHERE user='".$username."'";
$r = mysql_query($sql,$con);
$row = mysql_fetch_array($r);
echo json_encode($row);

这应该将整行作为 JSON 对象返回,然后您可以在成功方法中将其解析为 Javascript 对象:

var rowData = JSON.parse(data);

然后你应该能够访问你的所有字段

rowData.user;
and
rowData.health;
于 2012-07-10T00:51:39.157 回答