【发布时间】:2015-04-25 15:18:05
【问题描述】:
我尝试使用 mysqli_real_escape_string 转义查询字符串和包含撇号的$variable,变量值来自数据库。我收到以下错误。
您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 '\'Shamrock Rovers%\' AND away_team like \'St Patrick's Athletic%\'' 附近使用正确的语法
撇号不会被比较值周围的引号转义。
这是出现在 PHP 文件中的查询:
$homeTeam = filter_input(INPUT_GET, 'homeTeam', FILTER_SANITIZE_STRING);
$homePlayers = "select * from players where team_name like $homeTeam";
$homePlayers = mysqli_real_escape_string($dbc, $homePlayers);
$homePlayersResult = mysqli_query($dbc, $homePlayers);
然后echoed 到浏览器:
select * from players where team_name like Shamrock Rovers
我已经尝试了许多不同的方法,但结果没有变化我觉得我忽略了一些简单的事情。 提前致谢。
编辑 1
更新代码
$homeTeam = filter_input(INPUT_GET, 'homeTeam', FILTER_SANITIZE_STRING);
$homeTeam = mysqli_real_escape_string($dbc, $homeTeam);
echo "<br>".$homeTeam."<br>";
$homePlayers = "select * from players where team_name like '$homeTeam%'";
$homePlayersResult = mysqli_query($dbc, $homePlayers);
此脚本从处理脚本中接收 3 个参数
header("location: ../scorer.php?gameWeek=$gameWeek&homeTeam=$homeTeam&awayTeam=$awayTeam");
输出 select * from player where team_name like 'St Patrick's Athletic%'
编辑 2
在 mysql 命令窗口中输入查询后,当我提交一次查询时没有任何反应,但是当我再次输入时,我得到以下错误。
【问题讨论】:
标签: php mysql string mysqli escaping