2011-04-24 50 views
1

我有一个页面,从SQL查询返回一些结果到Mysql数据库。出于某种原因,它将每个值都返回两次,我想是因为它存储在数据库中都有一个数字索引和一个字符串索引。我怎样才能提取只有索引和值的字符串索引,并忽略那些整数索引?PHP MySQL的结果返回值的两倍

我使用生成表功能如下:

function SQLtable($answer) { 
$result = "<table class=\"SQLresult\">"; 

$row = mysql_fetch_array($answer); 

//TODO check for empty table here and return a message if empty 

$result .= "<tr>"; 
foreach (array_keys($row) AS $heading) { 
$result .= "<th>$heading</th>"; 
} 
$result .= "</tr>"; 

do { 
$result .= "<tr>"; 
    foreach($row as $cell) { 
    $result .= "<td>".$cell."</td>"; 
    } 
$result .= "</tr>"; 

} 
while ($row = mysql_fetch_array($answer)); 

$result .= "</table>"; 
return $result; 
} 

结果的截图:http://i.stack.imgur.com/3YXoh.png

感谢。

edit1 - 我正在使用的SQL有点像测试的占位符。它是:

$query = "SELECT * FROM politicians"; 

我也试过明确要求的列,我得到同样的问题。

$query = "SELECT firstname,lastname,jurisdiction,party,riding FROM politicians"; 
+0

你可以发布你正在使用检索从表中数据的SQL。这很可能是需要改变的。 – 2011-04-24 03:18:36

回答

5

mysql_fetch_array()将默认返回一个同时包含关联数组和常规数字键控结果集的行的哈希值。要获取其中一个,请使用mysql_fetch_row()(array)或mysql_fetch_assoc()(散列),或者使用mysql_fetch_array()的可选第二个参数指定您想要的类型

这些都是equivalances:

mysql_fetch_assoc($result) -> mysql_fetch_array($result, MYSQL_ASSOC); 
mysql_fetch_row($result) -> mysql_fetch_array($result, MYSQL_NUM); 
mysql_fetch_array($result) -> mysql_fetch_array($result, MYSQL_BOTH); 
+0

非常感谢Marc!那正是我所期待的。 – Derek 2011-04-24 03:31:28