SQL PDO“ @ P1”附近的语法错误

问题描述 投票:-1回答:1

我尝试在PDO SQL中使用LIMIT。

我的代码是这样:

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

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

PHP致命错误:未捕获的PDOException:SQLSTATE [42000]:[Microsoft] [用于SQL Server的ODBC驱动程序17] [SQL Server] Falche语法在derNähevon“ @ P1”中。在C:... \ werte.php:96

堆栈跟踪:

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

1 {main}

在第96行的C:\ ... \ werte.php中抛出

第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();
sql sql-server pdo syntax-error limit
1个回答
0
投票

LIMIT子句不是标准SQL的一部分。 MySQL,PostgreSQL和SQLite都将它作为SQL的供应商扩展来支持。SQL Server具有类似的内容:TOP

$sql = "SELECT top :limit1 * FROM TblWerte";
$result = $db->prepare($sql);
$result->bindParam(':limit1 ', $limit1);
$limit1 = 15;
$result->execute();
© www.soinside.com 2019 - 2024. All rights reserved.