【问题标题】:Display MySQL Database as an array将 MySQL 数据库显示为数组
【发布时间】:2012-03-03 01:39:40
【问题描述】:

我有一个包含用户信息的 MySQL 数据库,例如用户名、密码、电子邮件等。

我想要一个 PHP 脚本,它允许我提取他们的用户名并像这样显示它:

"用户名1","用户名2","用户名3"

字面上完全一样,引号和所有内容。

编辑:抱歉没有提供足够的信息。

该表名为“users”,我想拉出的字段是“用户名”,我可以让它拉出并显示所有信息,我唯一的问题是内爆。

【问题讨论】:

  • 伙计,你确实需要提供表名,MySQL中的数据不是存储在数据库中,而是以数据库内表中的行的形式存储。 :)
  • 不,这不是为了家庭作业,这只是我为了好玩而做的事情。但很抱歉没有提供所有信息。我所需要的只是让你让它为我内爆,因为我似乎无法得到它。这是我的 $result 供您使用:$result = mysql_query("SELECT username FROM users");

标签: php mysql database arrays


【解决方案1】:

好的,伙计,阅读 cmets

<?php // open a php tag

$dbc = mysql_connect("host", "username", "password"); // connect to database
mysql_select_db("db_name", $dbc) // select the database

$sql = "SELECT `username` FROM `users_table`"; // select only the username field from the table "users_table"
$result = mysql_query($sql); // process the query

$username_array = array(); // start an array

while($row = mysql_fetch_array($result)){ // cycle through each record returned
  $username_array[] = "\"".$row['username']."\""; // get the username field and add to the array above with surrounding quotes
}

$username_string = implode(",", $username_array); // implode the array to "stick together" all the usernames with a comma inbetween each

echo $username_string; // output the string to the display

?>

【讨论】:

  • 非常感谢,我是 PHP 新手,所以这对我来说是全新的,感谢您帮助我,希望能学到更多!
  • 嘿,别担心……我们都曾在你所在的地方! :) 我相信你很快就会成为专家!只需阅读 cmets,我已尽力提供帮助。如果您还有其他问题,请在此处提问,或在 Twitter 上@tclayson 联系我。
【解决方案2】:

我已经看过所有其他答案,但是您是否考虑过使用 PDO 而不是 mysql_query 函数?这是使用数据库的一种更好的方式。

这是您希望通过几行代码实现的目标(使用 Lamba 函数):

 $dbh = new PDO("mysql:host=localhost;dbname=test", "yourusername", "yourpassword");
 $results = $dbh->prepare("SELECT u.username FROM users u");
 $results->execute();
 $results = $results->fetchAll();
 echo implode(", ", array_map(function(&$r) { return $r['username']; }, $results));

输出:Jamie, Bob, Chris 干净整洁。此外,您应该检查是否有任何返回的结果以及查询是否成功。

只是另一种方法。

编辑:我刚刚意识到您是初学者,所以我的回答可能有点太高级了。但是,我会把它留给其他人作为解决方案,也许当您了解更多信息时,您可能会考虑使用 PDO 和 Lamba 函数。祝你好运。

【讨论】:

  • 哇,array_map...这是用 PHP 做事的好方法,谢谢提醒。 :)
  • 而且我认为,我们都想到了任何图书馆的答案。 :)
  • @hijarian - 是的,这很时髦。我尽可能使用它。请记住:匿名函数只能从 5.3 开始使用。而 PDO 一般默认安装在 PHP 中。 :-)
【解决方案3】:

假设您有一个“mydb”数据库和“用户”表。

需要 SQL:

USE mydb;
SELECT username from users;

短版:

  1. 将其包装在 PHP 调用中以 mysql PHP library
  2. 以数组形式获取结果,然后使用逗号符号implode

长版:

首先我们需要连接数据库:

$db = mysql_connect('DATABASE_HOST', 'USER', 'PASSWORD');
if (!$db) {
    die('Not connected : ' . mysql_error());
}

$db_selected = mysql_select_db('mydb', $db);
if (!$db_selected) {
    die ('Can\'t use mydb: ' . mysql_error());
}

记得总是检查函数的返回值。

然后我们查询数据库:

$result = mysql_query('select username from users', $db);

...并在平面数组中获取结果(我们只需要用户名):

while ($row = mysql_fetch_array($result, MYSQLI_ASSOC))
{
    $data[] = $row['login'];
}

然后我们根据您的规范格式化返回的数据:

$string_result = '"'. implode('", "', $data) . '"';

你可以用$string_result做任何你想做的事,只需在使用后立即关闭数据库连接:

mysql_close($db);

祝你学习 PHP 好运,顺便说一句。 ;)

【讨论】:

    【解决方案4】:

    您可以使用 PHP 的 implode,但假设列表不会太长,在 SQL 中执行可能会更容易:

    SELECT GROUP_CONCAT(CONCAT('"', username, '"')) AS usernames
    FROM your_table
    

    【讨论】:

      猜你喜欢
      • 2021-04-18
      • 2021-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-01
      • 1970-01-01
      • 2016-04-30
      相关资源
      最近更新 更多