【问题标题】:PDOException in MySQL 5.7MySQL 5.7 中的 PDOException
【发布时间】:2020-08-03 01:41:25
【问题描述】:

我明白了:

致命错误:带有消息的未捕获异常“PDOException” 'SQLSTATE[42000]: 语法错误或访问冲突:1064 你有一个 SQL 语法错误;检查与您对应的手册 MySQL 服务器版本,用于在 'LIMIT 1' 附近使用正确的语法 第 1 行'

我正在尝试将一些代码从 MySQL 5.6 升级到 5.7,但我不确定如何重写?

    public function getPlayerInfo($uid){

        $this->session->newQuery();
        $sqlSelect = "SELECT COUNT(*) AS total, login, gameIP, homeIP, gamePass, email FROM users WHERE id = $uid LIMIT 1";
        $data = $this->pdo->query($sqlSelect)->fetch(PDO::FETCH_OBJ);

        if($data->total == 0){
            exit();
        }

为了澄清这是做什么的,它应该返回相关的玩家数据,例如,在这个文件的更下方,我有:

if($doomStats['DOOM']['clanID'] == 0){
                    $doomedBy = '<a href="profile?id='.$doomStats['DOOM']['creatorID'].'">'.self::getPlayerInfo($doomStats['DOOM']['creatorID'])->login.'</a>';
                } else {
                    
                    $clan = new Clan();
                    $clanInfo = $clan->getClanInfo($doomStats['DOOM']['clanID']);
                    $doomedBy = '<a href="clan?id="'.$doomStats['DOOM']['clanID'].'">'.$clanInfo->name.'</a>';
                    $doomedBy .= ' <span class="small nomargin">(Released by <a href="profile?id='.$doomStats['DOOM']['creatorID'].'">'.self::getPlayerInfo($doomStats['DOOM']['creatorID'])->login.'</a>)</span>';
                }

我希望这可以澄清。

【问题讨论】:

  • 你想做什么?一般来说,使用参数可以解决意想不到的问题。
  • 不要发送带有不相关标签的垃圾邮件。
  • @MarcinOrlowski 这不是我的意图,因为这个项目涵盖了我所有的标签。我很抱歉。
  • 删除LIMIT 1
  • @GordonLinoff 我用一个调用这个函数的例子编辑了这个问题。我希望它有所帮助。

标签: php mysql


【解决方案1】:

在没有聚合函数的情况下使用count?例如:groupby 也将$uid 放在单引号中

【讨论】:

  • 天哪,这么简单。是的,感谢 '$uid' 关闭 MySQL。此外, GROUPBY 将按 X 获取所有内容并仅返回该值,因此我不能在这里使用它。感谢您建议单引号修复,因为它有效!
猜你喜欢
  • 1970-01-01
  • 2018-01-11
  • 1970-01-01
  • 2021-08-25
  • 2016-10-26
  • 1970-01-01
  • 2021-06-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多