mysqlfetcharray php7,PHP: mysqli_result::fetch_array - Manual

Here is a function to return an associative array with multiple columns as keys to the array.

This is a rough approximation of the perl DBI->fetchall_hashref function - something I find myself using quite a bit.

Given a simple mySQL table:

mysql> select * from city;

+----------------+----------------+------------------+------------+

| country        | region         | city             | hemisphere |

+----------------+----------------+------------------+------------+

| South Africa   | KwaZulu-Natal  | Durban           | South      |

| South Africa   | Gauteng        | Johannesburg     | South      |

| South Africa   | Gauteng        | Tshwane          | South      |

| South Africa   | KwaZulu-Natal  | Pietermaritzburg | South      |

| United Kingdom | Greater London | City of London   | North      |

| United Kingdom | Greater London | Wimbledon        | North      |

| United Kingdom | Lancashire     | Liverpool        | North      |

| United Kingdom | Lancashire     | Manchester       | North      |

+----------------+----------------+------------------+------------+

*Note* - this is a simple function that makes no attempt to keep multiple values per key, so you need to specify all the unique keys you require.

$link=mysqli_connect("localhost","username","password","test");$result=mysqli_query($link,"select * from city");$results_arr=fetch_all_assoc($result,array('hemisphere','country','region','city'));

functionfetch_all_assoc(&$result,$index_keys) {// Args :    $result = mysqli result variable (passed as reference to allow a free() at the end

//           $indexkeys = array of columns to index on

// Returns : associative array indexed by the keys array$assoc= array();// The array we're going to be returningwhile ($row=mysqli_fetch_array($result,MYSQLI_ASSOC)) {$pointer= &$assoc;// Start the pointer off at the base of the arrayfor ($i=0;$i

if (!isset($row[$key_name])) {

print"Error: Key$key_nameis not present in the results output.\n";

return(false);

}$key_val= isset($row[$key_name]) ?$row[$key_name]  :"";

if (!isset($pointer[$key_val])) {$pointer[$key_val] ="";// Start a new node$pointer= &$pointer[$key_val];// Move the pointer on to the new node}

else {$pointer= &$pointer[$key_val];// Already exists, move the pointer on to the new node}

}// for $i

// At this point, $pointer should be at the furthest point on the tree of keys

// Now we can go through all the columns and place their values on the tree

// For ease of use, include the index keys and their values at this point tooforeach ($rowas$key=>$val) {$pointer[$key] =$val;

}

}// $row

/* free result set */$result->close();

return($assoc);

}?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值