PHP / MySQL以错误的顺序回放&还回显列标题而不是该列的行值?

时间:2013-10-18 16:37:14

标签: php mysql ajax

对不起,如果标题措辞有点奇怪和尴尬。

我有一个通过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返回包含type100250&amp;列的2行数据。 setup,列type的值为12毫米和16毫米。这些返回正常,设置值也是如此,但列100和&amp;的值也是如此。 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

任何帮助表示欢迎,欢呼。

1 个答案:

答案 0 :(得分:1)

如果我不得不大胆猜测,它可能与使用mysql_fetch_array()以及具有数字列名称有关。默认情况下,mysql_fetch_array()函数将返回一个包含位置和标记索引的数组。在那里可能会有些混淆。

我会尝试:

  • 使用mysql_fetch_assoc()代替mysql_fetch_array()
  • 将数据库中的列名更改为非数字(无论如何这是一个好主意)
  • 确保您的查询正确转义列名称(如果它们保持数字

如果这些都没有任何效果,那么查看数据库中包含的确切数据和用于获取它的查询将会很有帮助,因为这些也可能是潜在的问题。