关于查询中重复的字段名,我想找一种无需使用别名就能检索行的方法,所以我写了这个类来将行返回为二维数组。
<?
$field = $drow['table']['column'];
?>
以下是代码
<?
class mysql_resultset
{
var $results, $map;
function mysql_resultset($results)
{
$this->results = $results;
$this->map = array();
$index = 0;
while ($column = mysql_fetch_field($results))
{
$this->map[$index++] = array($column->table, $column->name);
}
}
function fetch()
{
if ($row = mysql_fetch_row($this->results))
{
$drow = array();
foreach ($row as $index => $field)
{
list($table, $column) = $this->map[$index];
$drow[$table][$column] = $row[$index];
}
return $drow;
}
else
return false;
}
}
?>
这个类使用 mysql_query 结果进行初始化
<?
$resultset = new mysql_resultset(mysql_query($sql));
?>
构造函数构建一个数组,将每个字段索引映射到一个 ($table, $column) 数组,这样我们就可以使用 mysql_fetch_row 并通过索引在 fetch() 方法中访问字段值。然后,这个方法使用该映射来构建二维数组。
一个例子
<?
$sql =
"select orders.*, clients.*, productos.* ".
"from orders, clients, products ".
"where join conditions";
$resultset = new mysql_resultset(mysql_query($sql));
while ($drow = $resultset->fetch())
{
echo 'No.: '.$drow['orders']['number'].'
';
echo 'Client: '.$drow['clients']['name'].'
';
echo 'Product: '.$drow['products']['name'].'
';
}
?>
我希望其他人能像我一样发现它有用。