group\u concat分隔符在php中中断sql数据

rwqw0loc  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(444)

我有一个很奇怪的问题。我在一个php sql查询中使用groupconcat。它按预期工作,项目之间使用默认的逗号分隔。但是,我想要一个逗号和空格。我将sql查询更改为:

GROUP_CONCAT(platforms.platformname SEPARATOR ', ')

结果是,我的逗号分隔的项目只是停止显示。我试过很多不同的分隔符,但没有骰子。除了字段名以外的任何内容都会阻止页面的显示。
非常感谢您的帮助!
编辑:抱歉,我在ipad上把问题打出来了,但不知什么原因,它打错了。我在实际代码中使用了正确的。不管怎样,由于某种原因,这个网站因为被愚弄而关闭了(尽管我在这里找不到被愚弄的人)。感谢所有的回答。
edit2:这是我目前拥有的$sql字符串:

$sql = "select g.*, group_concat(distinct p.platformname separator ', ')
    from games g 
    inner join platformrelations pr
    on g.gameid=pr.gameid
    inner join platforms p
    on p.platformid=pr.platformid";

如果我试图在页面上显示“platforms”,上面的返回空白字段。如果我去掉“distinct”和“separator”位,它就工作了(即。显示“xbox one,pc”)。值得注意的是,我在sql中运行了这个查询,它正常工作了。所以我不完全确定我在哪里绊倒了。
编辑3:更多代码

$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}

$sql = "SELECT *, GROUP_CONCAT(platforms.platformname separator ', ') FROM games
        INNER JOIN platformrelations on platformrelations.gameid = games.gameid
        LEFT JOIN platforms on platformrelations.platformid = platforms.platformid";

$result = $conn->query($sql);

if ($result->num_rows > 0) {
  while($row = $result->fetch_assoc()) {

echo $row['GROUP_CONCAT(platforms.platformname)'];

  }
} else {
  echo "0 results";
}

$conn->close();

?>
wvmv3b1j

wvmv3b1j1#

我知道了。
我没有为组\u concat值使用别名。这样做允许我将分隔符放入其中,然后调用$row['alias']。
出于某种原因,我最初的sql查询运行得非常好。但这似乎使在php中调用数据更为愉快。

$sql = "SELECT *, GROUP_CONCAT(platforms.platformname separator ', ') as platformy FROM games
        INNER JOIN platformrelations on platformrelations.gameid = games.gameid
        LEFT JOIN platforms on platformrelations.platformid = platforms.platformid";

$result = $conn->query($sql);

if ($result->num_rows > 0) {
  while($row = $result->fetch_assoc()) {

echo $row['platformy'];

  }
} else {
  echo "0 results";
}

$conn->close();

?>

相关问题