mysql_field_table()的错误结果

时间:2013-11-14 15:07:34

标签: php mysql

我认为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
)

1 个答案:

答案 0 :(得分:4)

根据PHP文档,

mysql_field_table()将字段 offset 而不是其名称作为第二个参数。因此,您的名称将转换为数字,这将导致所有迭代的结果为零。

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

string mysql_field_table(resource $ result,int $ field_offset)

     

<强> field_offset

     

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