PHP PDO SELECT LIMIT问题

时间:2015-02-13 13:28:58

标签: php mysql pdo

我已经进行了几个小时的故障排除,但我仍然遇到此错误:

  

错误:SQLSTATE [42000]:[Microsoft] [SQL Server Native Client 11.0] [SQL Server]'LIMIT'附近的语法不正确

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

 $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,那么一切都适用于任何设置,所以我需要一些帮助来弄清楚发生了什么。

1 个答案:

答案 0 :(得分:2)

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

SELECT TOP 10 * FROM table_name