SQL PDO "@P1" 附近的语法错误

SQL PDO Wrong syntax near "@P1"

我尝试在 PDO 中使用 LIMIT SQL。

我的代码是这样的:

$sql = "SELECT * FROM TblWerte LIMIT :limit1";
$result = $db->prepare($sql);
$result->bindParam(':limit1', $limit1);
$limit1 = 15;
$result->execute();

但是当我写 $result->execute();我不断收到此错误:

PHP Fatal error: Uncaught PDOException: SQLSTATE[42000]: [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Falsche Syntax in der Nähe von "@P1". in C:...\werte.php:96

Stack trace:

0 C:\...\werte.php(96): PDOStatement->execute()

1 {main}

thrown in C:\...\werte.php on line 96

第96行是“$result->execute();”

我已经尝试过不同的方法,比如使用 bindValue() 而不是 bindParam(),我尝试直接将值 "limit1" 解析为 bindParam() 中的整数 ...

解决方法 我不得不使用 TOP 而不是 LIMIT。我还必须删除 bindParams() 部分。

$sql = "SELECT TOP 15 * FROM TblWerte ORDER BY ID DESC";
$result = $db->prepare($sql);
$result->execute();

LIMIT 子句不是标准 SQL 的一部分。 MySQL、PostgreSQL 和 SQLite 支持它作为 SQL 的供应商扩展。 SQL 服务器有类似的东西: TOP

$sql = "SELECT top :limit1 * FROM TblWerte";
$result = $db->prepare($sql);
$result->bindParam(':limit1 ', $limit1);
$limit1 = 15;
$result->execute();