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
我已经排查了几个小时,但还是不断收到此错误:
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