2013-10-18 26 views
0

抱歉,如果標題的措辭有點奇怪和尷尬。PHP/MySQL以錯誤的順序回顯,還回顯列標題而不是該列的行值?

我有一個通過AJAX/PHP/MySQL創建表的系統,但由於某種原因,我遇到了一些問題。

首先,這裏的PHP呼應的結果在表

if(mysql_num_rows($sql)>0) { 
$quote=$quote."<h3>Hard Enamel</h3>"; 
while($row = mysql_fetch_array($sql)){ 

    $quote=$quote."<p>Size: ".$row["type"]."<br />Extras: ".$HEextras."</p> 
    <table border='1' width='300' cellpadding='3'> 
    <tr> 
    <th width='100'>Quantity</th> 
    <th width='100'>Unit Cost</th> 
    <th width='100'>Setup</th> 
    </tr>"; 


    if($row["100"]) { 
     $quote=$quote."<tr><td>100</td><td>".cost($row["100"])."</td><td>".setup($row["setup"])."</td></tr>"; 
    } 
    if($row["250"]) { 
     $quote=$quote."<tr><td>250</td><td>".cost($row["250"])."</td><td>".setup($row["setup"])."</td></tr>"; 
    } 
    if($row["500"]) { 
     $quote=$quote."<tr><td>500</td><td>".cost($row["500"])."</td><td>".setup($row["setup"])."</td></tr>"; 
    } 
    if($row["1000"]) { 
     $quote=$quote."<tr><td>1,000</td><td>".cost($row["1000"])."</td><td>".setup($row["setup"])."</td></tr>"; 
    } 
    if($row["2500"]) { 
     $quote=$quote."<tr><td>2,500</td><td>".cost($row["2500"])."</td><td>".setup($row["setup"])."</td></tr>"; 
    } 
    if($row["5000"]) { 
     $quote=$quote."<tr><td>5,000</td><td>".cost($row["5000"])."</td><td>".setup(0)."</td></tr>"; 
    } 
    if($row["10000"]) { 
     $quote=$quote."<tr><td>10,000</td><td>".cost($row["10000"])."</td><td>".setup(0)."</td></tr>"; 
    } 
    $quote=$quote."<br />"; 
} 

echo $quote; 
} 

測試時我有SQL返回2行與100type,數據,250 & setup,同列type值12毫米和16毫米。這些返回正常,設置值也一樣,但列100 & 250的值返回列標題。也嘗試沒有cost()函數,但沒有改變任何東西。

此外,它讀錯了順序,我不知道爲什麼!下面返回結果。

Hard Enamel 

Size: 12mm 
Extras: extrastring 


Size: 16mm 
Extras: extrastring 

Quantity Unit Cost Setup 
100 100 40 
250 250 40 

Quantity Unit Cost Setup 
100 100 40 
250 250 40 

任何幫助表示讚賞,歡呼聲。

+2

你可以添加你使用的SQL字符串嗎?我猜你可能會錯過100和250列名的反引號,所以SQL將它們視爲文字。 – danielpsc

+0

@danielpsc謝謝,正確地逃避與反引號工作(愚蠢的錯誤,我是一個初學者) - 對奇怪的秩序的事情有任何想法? – user1952067

回答

1

如果我不得不採取胡亂猜測,它可能是與使用mysql_fetch_array()與具有數字列名一起。默認情況下,mysql_fetch_array()函數將返回一個包含位置和標籤索引的數組。那裏可能會有些困惑。

我會嘗試:

  • 使用mysql_fetch_assoc()代替mysql_fetch_array()
  • 改變你的數據庫中的列名是非數字(這是一個好主意,反正)
  • 確保您的查詢正確地轉義列名如果它們仍然是數字

如果這些都沒有任何影響,它將有助於查看確切的數據co在數據庫中找到並使用查詢來獲取它們,因爲這些也可能是潛在的問題。

+0

謝謝,改變列名並正確地逃避反引號工作 - 任何想法的奇怪秩序的事情? – user1952067

+1

看起來您可能會錯過循環結尾處的結尾'',這可能會導致其顯示出奇怪。 – futureal

+0

我覺得@futureal是正確的 - 你的'$報價= $報價「
‘;'problably只是需要'$報價= $報價’」;'否則你開始一個新表在關閉之前。第一。 – danielpsc

相關問題