我尝试在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();
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();