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 に答える