任何人都可以知道,将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数组。
答案 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);