sql pdo“@p1”附近语法错误

jv2fixgn  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(420)

我尝试将limit与pdosql结合使用。
我的代码是:

$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][odbc driver 17 for sql server][sql server]falsche-syntax in der nä他叫“@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();
k2arahey

k2arahey1#

这个 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();

相关问题