[英]dynamically select columns from mysql
我有幾個問題引領動態部分,但我認為這應該是有道理的
$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
基於第一行,第二個查詢最終成為
SELECT veld FROM memberData WHERE member_ID = '7'
此查詢返回正確的結果
veld
.7
但是這一切都在最后一行分崩離析,它在那里動態地選擇從查詢中提取哪一列。 有沒有辦法解決這個問題?
您正在定義兩個相同的$ row名稱,將第二次獲取重命名為$ row1 forexemple
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];
根據經驗,你應該總是添加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'];
單引號中的變量將不會被評估,因此而不是
$refiningRate = $row['$oreType'];
你可能想要的
$refiningRate = $row[$oreType];
另外,您是否有理由不僅將memberData表加入原始查詢?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.