0

動的な部分につながるクエリがいくつかありますが、これは理にかなっていると思います

$memberID = 7;
$oreVolumePriceQuery = "SELECT od.oreID, od.oreType, od.name, od.inGameID, od.size, ir.officialCorpRate FROM oreData od JOIN itemRates ir ON od.inGameID = ir.typeID order by od.oreID asc";
$oreVolumePriceResult = mysql_query($oreVolumePriceQuery);
while($row = mysql_fetch_assoc($oreVolumePriceResult)){
    $oreType = $row['oreType'];
    $getRefiningRateQuery = "SELECT '$oreType' FROM memberData WHERE member_id = '$memberID'";
    $getRefiningRateResult = mysql_query($getRefiningRateQuery);
    while($row = mysql_fetch_assoc($getRefiningRateResult)){
    $refiningRate = $row['$oreType'];

最初のクエリは以下のような結果を返します(実際には31行ですが、2行で十分です)

oreID | oreType | name     | inGameID | size | officialCorpRate
 1    | veld    | veldspar | 1230     | 0.1  | 10.21
 2    | scor    | scordite | 1228     | .15  | 10.2

1行目に基づいて、2番目のクエリは最終的に

SELECT veld FROM memberData WHERE member_ID = '7'

そして、このクエリはの正しい結果を返します

veld
 .7

しかし、これはすべて最後の行でバラバラになり、クエリからプルする列を動的に選択します。これを修正する方法はありますか?

4

3 に答える 3

2

2 つの同じ $row 名を定義している場合、2 番目のフェッチの名前を $row1 に変更します。

 while($row = mysql_fetch_assoc($oreVolumePriceResult)){
$oreType = $row['oreType'];
$getRefiningRateQuery = "SELECT '$oreType' FROM memberData WHERE member_id = '$memberID'";
$getRefiningRateResult = mysql_query($getRefiningRateQuery);
while($row1 = mysql_fetch_assoc($getRefiningRateResult)){
$refiningRate = $row1[$oreType];
于 2013-01-13T12:46:06.080 に答える
0

経験則として、mysql_error();不明な理由でクエリが失敗した場合は常に追加する必要があります。だから、私は3/4の変更を加えたので、これを試してください:

$oreVolumePriceQuery = "SELECT od.oreID, od.oreType, od.name, od.inGameID, od.size, ir.officialCorpRate FROM oreData od JOIN itemRates ir ON od.inGameID = ir.typeID order by od.oreID asc";
$oreVolumePriceResult = mysql_query($oreVolumePriceQuery) or die(mysql_error());
while($row = mysql_fetch_assoc($oreVolumePriceResult)){
    $memberID = 7;
    $oreType = $row['oreType'];
    $getRefiningRateQuery = "SELECT '$oreType' FROM memberData WHERE member_id = '$memberID'";
    $getRefiningRateResult = mysql_query($getRefiningRateQuery) or die(mysql_error());
    while($row = mysql_fetch_assoc($getRefiningRateResult)){
    $refiningRate = $row['$oreType'];
于 2013-01-13T12:46:19.950 に答える
0

一重引用符で囲まれた変数は評価されないため、代わりに

$refiningRate = $row['$oreType'];

あなたはおそらく欲しい

$refiningRate = $row[$oreType];

また、 memberData テーブルを元のクエリに結合していない理由はありますか?

于 2013-01-13T12:47:26.397 に答える