我已经进行了几个小时的故障排除,但我仍然遇到此错误:
错误: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,那么一切都适用于任何设置,所以我需要一些帮助来弄清楚发生了什么。
答案 0 :(得分:2)
根据您使用Microsoft SQL Server的错误消息。 SQL Server不使用LIMIT,而是需要在查询的前面使用TOP,例如。
SELECT TOP 10 * FROM table_name