0

我觉得有问题mysql_field_table

我的查询:

 SELECT partners.buyer,
        calls_nc_sell_daily.market,
        partners.name,
        calls_nc_sell_daily.partner_id_fk as 'partners_id_fk',
        partners.seller
   FROM partners, calls_nc_sell_daily
  WHERE calls_nc_sell_daily.date >= '$date_start'
    AND calls_nc_sell_daily.date <= '$date_stop'
    AND partners.id = calls_nc_sell_daily.partner_id_fk

WHEN 结果字段由以下 PHP 片段解析:

$tables = array();
for($i=0;$i<$elements;$i++) {
   $name =  mysql_field_name($result,$i);
   $tables[$name] = mysql_field_table($result,$name);
}
print_r($tables);

预期的:

Array
(
    [buyer] => partners
    [market] => calls_nc_sell_daily
    [name] => partners
    [partners_id_fk] => calls_nc_sell_daily
    [seller] => partners
)

实际的:

Array
(
    [buyer] => partners
    [market] => partners
    [name] => partners
    [partners_id_fk] => partners
    [seller] => partners
)
4

1 回答 1

4

mysql_field_table()根据 PHP 文档,将字段偏移量 而不是其名称作为第二个参数。所以你的名字会被转换成一个数字,这会导致所有迭代都为零。

$tables = array();
for($i=0;$i<$elements;$i++) {
   $name =  mysql_field_name($result,$i);
   $tables[$name] = mysql_field_table($result, $i);
}
print_r($tables);

字符串 mysql_field_table ( 资源 $result , int $field_offset )

field_offset

数值字段偏移量。field_offset 从 0 开始。如果 field_offset 不存在,也会发出 E_WARNING 级别的错误。

于 2013-11-14T15:10:38.863 回答