将mysql查询转换为数组格式

时间:2011-03-11 03:02:38

标签: php mysql arrays

任何人都可以知道,将mysql查询转换为php数组:

这是mysql查询:

SELECT SUM(time_spent) AS sumtime, title, url 
FROM library 
WHERE delete_status = 0 
GROUP BY url_id 
ORDER BY sumtime DESC

我想将此查询转换为简单的php数组。

5 个答案:

答案 0 :(得分:7)

因此,您需要从MySQL中获取数据。使用PHP从MySQL获取数据的最佳方法是PDO,这是一个跨数据库访问接口。

所以,首先让我们联系。

// Let's make sure that any errors cause an Exception.
// <http://www.php.net/manual/en/pdo.error-handling.php>
    PDO::setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// We need some credentials...
    $user = 'username';
    $pass = 'password';
    $host = 'hostname';
    $dbname = 'database';
// PDO wants a "data source name," made up of those credentials.
// <http://www.php.net/manual/en/ref.pdo-mysql.connection.php>
    $dsn = "mysql:host={$host};dbname={$dbname}";
    $pdo = new PDO($dsn, $user, $pass);

在那里,我们已经联系了。让我们假装$sql包含您在问题中提供的SQL。我们运行SQL:

$statement = $pdo->prepare($sql);
$statement->execute();

在那里,它被执行了。我们来谈谈结果。您坚决拒绝告诉我们您希望如何构建数据,所以让我们通过四种方式来获取您的数据。

我们首先假设查询返回一行。如果你想要一个数字索引数组,你可以这样做:

// <http://www.php.net/manual/en/pdostatement.fetch.php>
    $array = $statement->fetch(PDO::FETCH_NUM);
    unset($statement);

如果你想要一个关联数组,列名作为键,你可以这样做:

    $array = $statement->fetch(PDO::FETCH_ASSOC);
    unset($statement);

现在,如果查询返回多条记录怎么办?如果我们想要数字索引数组中的每一行,每行作为一个关联数组,我们会这样做:

// <http://www.php.net/manual/en/pdostatement.fetchall.php>
    $array = $statement->fetchAll(PDO::FETCH_ASSOC);
    unset($statement);

如果我们希望每行都是数字索引数组,该怎么办?你能猜到吗?

    $array = $statement->fetchAll(PDO::FETCH_NUM);
    unset($statement);

多田。您现在知道如何使用现代PDO接口查询MySQL,并将结果视为不少于四种类型的数组。你可以用极少的努力在PDO中完成大量其他很酷的事情。只需点击手册页面的链接,我非常故意不为您链接。

这个过分的帖子已经通过字母T,F和W以及数字PHP_MAX_INT + 1提供给您。

答案 1 :(得分:2)

我不清楚你,但是

mysql_fetch_array mysql_fetch_assoc

两者都只返回数组

请参阅: -

http://php.net/manual/en/function.mysql-fetch-array.php http://php.net/manual/en/function.mysql-fetch-assoc.php

答案 2 :(得分:1)

如果您只需要一个简单的数组......


while ($row = mysql_fetch_array($query)) { //you can assume rest of the code, right?
    $result[$row['url_id']] = array($row['sumtime']);
}

答案 3 :(得分:0)

对于一个简单的数组

$sql = mysql_query("SELECT SUM(time_spent) AS sumtime, title, url 
FROM library 
WHERE delete_status = 0 
GROUP BY url_id 
ORDER BY sumtime DESC");

while($row = mysql_fetch_array($sql)){
    $array1 = $row['sumtime'];
    $array2 = $row['title'];
    $array3 = $row['url'];
}

希望这是你想要的

答案 4 :(得分:0)

Dude最快的方式可能是以下

$data = array();
while($row = mysql_fetch_array($result)) 
{ 
    $data[] = $row; 
} 

print_r($data);