如何修复SQL查询中的单引号错误



我有一个SQL查询,其中我将英寸转换为英尺。

<?php  
$query ="
SELECT *
,replace (replace('<feet>'' <inches>"',
                   '<feet>', height / 12),
           '<inches>', height % 12) AS playerHeight
,abbrName
FROM leagueRosters
INNER JOIN leagueTeams AS teamInfo
ON leagueRosters.teamId=teamInfo.teamId
WHERE abbrName LIKE '".$_GET['team']."'
ORDER BY rosterId DESC
";  
$resultRoster = mysqli_query($connect, $query);  
?>

据我所知,我应该将单引号加倍,我已经这样做了

,replace (replace("<feet>"" <inches>"",
                   "<feet>", height / 12),
           "<inches>", height % 12) AS playerHeight

我也试过这个

,replace (replace("'<feet>'" "'<inches>'",
                       "'<feet>'", height / 12),
               "'<inches>'", height % 12) AS playerHeight

两者都不起作用。我尝试了其他一些组合,但总是在至少一行上出现错误。

我遵循了这个问题的答案 - 如何在 SQL Server 中转义单引号?但我仍然不确定我做错了什么。

您需要转义双引号,以便它不会结束 PHP 字符串。

$query ="
SELECT *
,replace (replace('<feet>'' <inches>"',
                   '<feet>', height / 12),
           '<inches>', height % 12) AS playerHeight
,abbrName
FROM leagueRosters
INNER JOIN leagueTeams AS teamInfo
ON leagueRosters.teamId=teamInfo.teamId
WHERE abbrName LIKE '".$_GET['team']."'
ORDER BY rosterId DESC
";
但是首先不需要

使用replace,只需使用字符串连接即可。

$query ="
SELECT *
,CONCAT(FLOOR(height/12), ''' ', height % 12, '"') AS playerheight
,abbrName
FROM leagueRosters
INNER JOIN leagueTeams AS teamInfo
ON leagueRosters.teamId=teamInfo.teamId
WHERE abbrName LIKE '".$_GET['team']."'
ORDER BY rosterId DESC
";  

最新更新