PHP PDO SELECT LIMIT 问题

PHP PDO SELECT LIMIT issue

我已经排查了几个小时,但还是不断收到此错误:

ERROR: SQLSTATE[42000]: [Microsoft][SQL Server Native Client 11.0][SQL Server]Incorrect syntax near 'LIMIT'

或者使用以下代码根本没有得到 return(这是我一直在进行故障排除的简化版本):

 $userName = "currentUser";

    // getting data
    $amper = "";
    $data = "";
    $limit = 10;

    // here you go:
        $sql = "SELECT * FROM tableName WHERE playerName <> :userName ORDER BY RAND() LIMIT :limit";
        $stm = $conn->prepare($sql);
        $stm->bindParam(':userName ', $userName );
        $stm->bindParam(':limit', $limit, PDO::PARAM_INT);

    try {
        $stm->execute();    
        $results = $stm->fetchAll();
        foreach ($results as $row) {            
            $data .= $amper."userDataOne=".$row['rowName'];
        }
    } catch(PDOException $e){
        echo'ERROR: ' . $e->getMessage();
    }

        print($data);

使用 follow 属性,我收到上面列出的语法错误:

$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

使用此属性设置没有错误,但没有选择任何行

$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION, PDO::ATTR_EMULATE_PREPARES, false);

如果我从 SELECT 中删除 LIMIT,那么任何设置都可以正常工作,所以我需要一些帮助来弄清楚发生了什么。

根据错误消息,您正在使用 Microsoft SQL 服务器。 SQL 服务器不使用 LIMIT,而是需要在查询的前面使用 TOP,例如

SELECT TOP 10 * FROM table_name