2013-11-14 107 views
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

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(資源$結果,詮釋$ field_offset)

field_offset

數值字段偏移量。 field_offset從0開始。如果field_offset不存在,則會發出E_WARNING級別的錯誤。