简体   繁体   English

将PHP变量添加到LIMIT后,MSSQL查询不起作用

[英]MSSQL query not working after adding PHP variable to the LIMIT

This is a query that I have used successfully in a MySQL environment before. 这是我之前在MySQL环境中成功使用过的查询。 When I try it using MSSQL. 当我尝试使用MSSQL。 It errors out on this statement: 出现以下错误:

$result = mssql_query("SELECT * FROM DriverAppInfo ORDER BY appdate LIMIT $startrow, 20") 

$startrow is defined by the following: $ startrow由以下定义:

if (!isset($_GET['startrow']) or !is_numeric($_GET['startrow'])) {
  $startrow = 0;
} 
else {
  $startrow = (int)$_GET['startrow'];
}   

Does $startrow in the query need to be surrounded by single quotes? 查询中的$ startrow是否需要用单引号引起来? Thank you in advance 先感谢您

The limit keyword translates to top in MSSQL / Sql Server land. limit关键字转换为MSSQL / Sql Server中的top

You'll need to abstract that depending on MySQL / MSSQL. 您需要根据MySQL / MSSQL对其进行抽象。 Remember: 记得:

PDO does not provide a database abstraction; PDO不提供数据库抽象; it doesn't rewrite SQL or emulate missing features. 它不会重写SQL或模拟缺少的功能。 You should use a full-blown abstraction layer if you need that facility. 如果需要该功能,则应使用完整的抽象层。

Also I'll mention that with MSSQL depending on version limit, offset might not be supported. 我还要提到的是,根据版本limit, offset MSSQL可能不支持limit, offset Take a look at this for MSSQL pagination approaches. 看看对于MSSQL分页方法。

1) check mssql_get_last_message() 1)检查mssql_get_last_message()

2) show final SQL, use somethin like: 2)显示最终的SQL,使用诸如此类的东西:

$sql = "SELECT * FROM DriverAppInfo ORDER BY appdate LIMIT $startrow, 20";
$result = mssql_query($sql);

echo $sql;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM