Php 在mysql查询中使用组_CONCAT时出错

Php 在mysql查询中使用组_CONCAT时出错,php,mysql,sql,Php,Mysql,Sql,我的代码运行良好,但当我添加 GROUP_CONCAT(CONCAT("<a href='index.php?id=", awards_user.userid, "'>", awards_user.username, "</a>")) AS userlist GROUP_CONCAT(CONCAT(“”)作为用户列表 要获取用户名为的用户id,请显示错误 分析错误:语法错误,意外的T_字符串[在此行中] SELECT awards.name as name, awar

我的代码运行良好,但当我添加

GROUP_CONCAT(CONCAT("<a href='index.php?id=", awards_user.userid, "'>", awards_user.username, "</a>")) AS userlist
GROUP_CONCAT(CONCAT(“”)作为用户列表
要获取用户名为的用户id,请显示错误

分析错误:语法错误,意外的T_字符串[在此行中]

SELECT awards.name as name, awards.link as link, 
       GROUP_CONCAT(DISTINCT awards_user.username) AS username,
       GROUP_CONCAT(DISTINCT awards_user.userid) AS userid,
       GROUP_CONCAT(CONCAT("<a href='index.php?id=", awards_user.userid, "'>", awards_user.username, "</a>")) AS userlist
   FROM awards LEFT JOIN awards_user ON (awards_user.awardid = awards.awardid)
   where awards.forumid = '".$_REQUEST['forumid']."'
   GROUP BY awards.awardid, awards.name, awards.link
选择awards.name作为名称,选择awards.link作为链接,
组\u CONCAT(不同的奖励\u user.username)作为用户名,
组\u CONCAT(不同的奖励\u user.userid)作为用户ID,
组_CONCAT(CONCAT(“”)作为用户列表
从奖品左侧加入奖品\u用户打开(awards\u user.awardid=awards.awardid)
其中awards.forumid='“$\u请求['forumid']””
按awards.awardid、awards.name、awards.link分组

您应该用反斜杠转义双引号
”,否则php会将其理解为字符串的结尾:

$sql = "SELECT awards.name as name
             , awards.link as link
             , GROUP_CONCAT(DISTINCT awards_user.username) AS username
             , GROUP_CONCAT(DISTINCT awards_user.userid) AS userid
             , GROUP_CONCAT(CONCAT(\"<a href='index.php?id=\", awards_user.userid, \"'>\"
             , awards_user.username, \"</a>\")) AS userlist
        FROM awards LEFT JOIN awards_user ON (awards_user.awardid = awards.awardid)
        WHERE awards.forumid = '" . $_REQUEST['forumid'] . "'
        GROUP BY awards.awardid
               , awards.name
               , awards.link";
$sql=“选择awards.name作为名称
,awards.link作为链接
,GROUP_CONCAT(独特的奖励_user.username)作为用户名
,GROUP_CONCAT(DISTINCT awards_user.userid)作为userid
,组\u CONCAT(CONCAT(\“\”)作为用户列表
从奖品左侧加入奖品\u用户打开(awards\u user.awardid=awards.awardid)
其中awards.forumid='“$\u请求['forumid']””
按奖项分组
,awards.name
,awards.link“;

引号转义是一个问题。为什么不这样使用呢

$formid = $_REQUEST['forumid'];

$query = <<<EOT
SELECT awards.name as name, awards.link as link, 
       GROUP_CONCAT(DISTINCT awards_user.username) AS username,
       GROUP_CONCAT(DISTINCT awards_user.userid) AS userid,
       GROUP_CONCAT(CONCAT("<a href='index.php?id=", awards_user.userid, "'>", awards_user.username, "</a>")) AS userlist
   FROM awards LEFT JOIN awards_user ON (awards_user.awardid = awards.awardid)
   where awards.forumid = '$formid'
   GROUP BY awards.awardid, awards.name, awards.link
EOT;

同一行中出现同样的错误,Thnx您是否有完整的PHP代码来设置此错误?将“$\u请求['forumid']”串联起来。“看起来很奇怪。您需要学习PHP字符串处理和转义的基础知识。看起来您需要转义双引号。
”“$\u请求['forumid']。“
这不是问题的原因,第行
GROUP_CONCAT(CONCAT(“”)上的错误作为userlist
thnx太多了,我发现可以解决问题,但我会尝试你的代码,我会注意你的观察
$formid = $_REQUEST['forumid'];

$id_link_1 = "<a href='index.php?id=";
$id_link_2 = "'>";
$id_link_3 = "</a>";

$query = <<<EOT
SELECT awards.name as name, awards.link as link, 
       GROUP_CONCAT(DISTINCT awards_user.username) AS username,
       GROUP_CONCAT(DISTINCT awards_user.userid) AS userid,
       GROUP_CONCAT(CONCAT($id_link_1, awards_user.userid, $id_link_2, awards_user.username, $id_link_3)) AS userlist
   FROM awards LEFT JOIN awards_user ON (awards_user.awardid = awards.awardid)
   where awards.forumid = '$formid'
   GROUP BY awards.awardid, awards.name, awards.link
EOT;