动态查询结果到php5中的数组

时间:2014-01-26 13:46:32

标签: php mysql arrays dynamic

所以我有一个处理查询的函数:

function cfquery($query){
    // Connection's Parameters
    $db_host="localhost";
    $db_name="d";
    $username="u";
    $password="p";
    $db_con=mysql_connect($db_host,$username,$password);
    $connection_string=mysql_select_db($db_name);
    // Connection
    mysql_connect($db_host,$username,$password);
    mysql_select_db($db_name);

    // Query
    $sql = $query;
    $results = mysql_query($sql);
    return $results; 
}

我正在尝试编写一个函数来获取结果并将它们放入一个数组中,但是这个函数正在生成一个“资源”,我在互联网上找到的所有东西都不能用于那些数据类型,或不是动态生成的 - 就像你必须知道列名以获取数据一样。

例如:

while ($row = mysql_fetch_array($results)){
    echo $row['name'] . ',' ;
    echo $row['email'] . ',' ;
    echo $row['city'] . ',' ;
}

我正在寻找能够从结果中获取列名的内容。像这样:

$array = new array();
loop rows index x {
    loop column_names index y {
        $array[x][y] = $results[rows][column_names];
    }
}

如果你不能说,我正在从ColdFusion过渡,所以我对“资源”是什么只有一个模糊的概念(在阅读一些文档之后),并且不知道为什么我不能将数组输出它的。

2 个答案:

答案 0 :(得分:2)

如果您可以使用MySQLi:使用mysqli_fetch_field_direct()获取字段元数据。

可以像这样访问字段名称(在结果循环中):

$metadata = mysqli_fetch_field_direct($row, $field_index);
$name = $metadata->name;

如果您使用已弃用的(从5.5开始)mysql函数:,那么您可以使用mysql_field_name($result, $field_index)代替相同的方式,但它会直接返回名称作为字符串而不是对象。

您可以在这里阅读MySQLi及其实现:http://uk1.php.net/mysqli

答案 1 :(得分:0)

不推荐使用mysql_ * ...使用mysqli_ *或pdo

在MySQL ......

function cfquery($query)
{
    $return = array();

    $cn = mysql_connect("localhost","u","p") or die('connection error');
    mysql_select_db("d", $cn) or die('select db error');

    $results = mysql_query($query, $cn) or die(mysql_error($cn));

    while ( $row = mysql_fetch_array($results) )
        $return[] = $row;

    mysql_free_result($results);
    mysql_close($cn);

    return $return;
}