【问题标题】:MySQL return fields as a string [duplicate]MySQL将字段作为字符串返回[重复]
【发布时间】:2019-12-15 13:55:52
【问题描述】:

我有以下 sql 可以为特定用户提取信息:

public function getForUniqueID($unique_id) {

    $sql = "SELECT `first_name` as first_name, `last_name` as last_name FROM `{$this->table}` WHERE `unique_id` = ? LIMIT 1";
    $stmt = $this->pdo->prepare($sql);
    $stmt->execute([$unique_id]);

    if ($stmt->rowCount() == 0) return null;

    $tournament = $stmt->fetchAll(PDO::FETCH_NAMED);
    $tournament = $tournament[0];

    $tournament = $this->applyRelations($tournament);

    return $tournament;

}

这会返回一个数组对象,但我想将 first_name 和 last_name 值作为一个字符串返回,格式如下:first_name " " last_name

如何修改上述方法以将名字和姓氏作为单个字符串返回?

【问题讨论】:

  • implode 数组。
  • 另外,如果您的查询将只返回一行,您可以只使用fetch 而不是fetchAll。那你就不用$tournament = $tournament[0]了。
  • 您需要在该 CONCAT 中使用单引号。您的 SQL 字符串已经用双引号括起来了。
  • 噢!谢谢@Don'tPanic!修复它
  • 不客气!不过,我认为最好将您的问题的更改还原。就像现在一样,其他任何出现的人都很难看到答案是如何真正回答问题的,因为他们现在都有相同的代码。

标签: php mysql sql pdo


【解决方案1】:

有很多方法可以解决这个问题。最简单的方法是仅连接 select 语句中的字段。 而不是

SELECT first_name as first_name, last_name as last_name顺便说一句,这些别名没有用,因为它与字段名称相同。

SELECT CONCAT(first_name, " ", last_name) as name

这只是将字段连接成一个名为 name 的字段,但您可以将该别名更改为您想要的任何内容。

【讨论】:

  • 谢谢你们的帮助。所以听起来我可以废弃所有的数组行,然后正确地返回它?
  • @Joe $tournament 如果你这样做,它仍然是一个数组,只是一个包含一个项目而不是两个项目的数组。如果您想跳过所有数组内容,请使用fetchColumn 方法而不是fetchfetchAll。这将返回一个字符串。
猜你喜欢
  • 2017-10-22
  • 2014-03-28
  • 2011-07-16
  • 2013-08-06
  • 2012-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-20
相关资源
最近更新 更多