PHP分页出现错误:“LIMIT”附近的语法不正确。(严重性15)连接到MSSQL DB时

PHP分页出现错误:“LIMIT”附近的语法不正确。(严重性15)连接到MSSQL DB时,php,sql,sql-server,pagination,Php,Sql,Sql Server,Pagination,我的PHP页面应该显示MSSQL表的行,每页显示4行。显示四行后,下四行将显示在新创建的页面上,并在上一页上显示一个链接以授予对该页面的访问权限。当然,这段代码已经使用MySQL进行了一些编辑。我想这个错误是由$sql代码引起的,但我不知道到底是什么原因造成的。当我在网站上运行我的PHP页面时,我似乎得到了错误 Warning: mssql_query() [function.mssql-query]: message: Incorrect syntax near 'LIMIT'. (sever

我的PHP页面应该显示MSSQL表的行,每页显示4行。显示四行后,下四行将显示在新创建的页面上,并在上一页上显示一个链接以授予对该页面的访问权限。当然,这段代码已经使用MySQL进行了一些编辑。我想这个错误是由$sql代码引起的,但我不知道到底是什么原因造成的。当我在网站上运行我的PHP页面时,我似乎得到了错误

Warning: mssql_query() [function.mssql-query]: message: Incorrect syntax near 'LIMIT'. (severity 15) in D:\Hosting\4502990\html\sales\usedunits.php on line 8

Warning: mssql_query() [function.mssql-query]: Query failed in D:\Hosting\4502990\html\sales\usedunits.php on line 8
Incorrect syntax near 'LIMIT'.
以下是我的完整PHP页面代码:

<?php 
if (isset($_GET["page"])) { $page  = $_GET["page"]; } else { $page=1; }; 
// connect to db
$connection = mssql_connect('gbam','GBaer','dsa!');
mssql_select_db('asdr',$connection);
$start_from = ($page-1) * 4; 
$sql = "SELECT * FROM used_trailers1 ORDER BY orderid ASC LIMIT '$start_from',4";
$rs_result = mssql_query ($sql, $connection); 
echo mssql_get_last_message( $connection );
?>
<!doctype html>
<head>
<link rel="stylesheet" type="text/css" media="screen" href="css/mobilemenu.css"/>
<script src="respond.min.js"></script>
<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-45342007-3', 'gba.ca');
  ga('send', 'pageview');

</script>
</head>
<body bgcolor="#102540">
<div class="gridContainer clearfix">
  <div id="div1" class="fluid">
    <div id="navcontain"></div>

  <div id="wrapper">
    <div id="cover"></div>
  <div id="mainnaviphone">
    <a href="../index.html"><img id="logo" src="images/gbmlogo.jpg" alt="G.B.M. Trailer Service LTD. Logo" title="G.B.M. Trailer Service LTD. Logo"/></a>
    <img src="images/newunitsbutton.png" alt="New Units Button" title="New Units Button" id="buto1">
  <img src="images/usedunitsbutton.png" alt="Used Units Button" title="Used Units Button" id="buto2">
  <a href="../index.html"><img src="images/homebutton.png" alt="home" title="Home" id="homebuto"/></a>
  <a href="#"><img src="images/previousbutton.png" alt="previous" title="Previous" id="prevbuto"/></a>
  <a href="#"><img src="images/nextbutton.png" alt="next" title="Next" id="nextbuto"/></a>
</div>

<div id="background2">
<div id="textcontrol">

<?php 
while ($row = mssql_fetch_assoc($rs_result)) { 
?> 
<div id='used1'>
<div id='rigtitle' class="contentHolder Default">
<? echo $row["title"]; ?>
</div>
<table class="infotabe1"><tr><td class="desctde">Description: </td><td rowspan="2" id="content_1" class="infotde contentHolder Default"><? echo $row["description"]; ?></td></tr></table>
<table class="infotabe"><tr><td class="desctd">Make: </td><td id="content_1" class="infotd contentHolder Default"><? echo $row["make"]; ?></td></tr></table>
<table class="infotabe"><tr><td class="desctd">Model: </td><td id="content_1" class="infotd contentHolder Default"><? echo $row["model"]; ?></td></tr></table>
<table class="infotabe"><tr><td class="desctd">Year: </td><td id="content_1" class="infotd contentHolder Default"><? echo $row["year"]; ?></td></tr></table>
<table class="infotabe"><tr><td class="desctd">Price: </td><td id="content_1" class="infotd contentHolder Default"><? echo $row["price"]; ?></td></tr></table>

<!-- Unit Picture -->
<img src='images/<? echo $row["photo"]; ?>' id='mainimage'>
<a href='usedunit.php?orderid=<? echo $row["orderid"]; ?>'><img src='images/picturesandspecsbutton.png' alt='Pictures and Specs' title='Pictures and Specs' id='picsandspecsbuto'></a>
</div>
<?php 
}; 
?>
</div>
<div id="description" class="resize">
  <p><u>Click</u> or call for more information or enquiries.</p>
</div>
<div id="bottomquote">
  Your Certified Tanker Trailer Specialist
</div>
<div id="bottomcontactinfo">
  <em>Phone <a style="color:white; text-decoration:none;" href="tel:1-4032799717">403 279 9717</a> or <a style="color:white; text-decoration:none;" href="tel:1-888-426-9717">1 888 426 9717</a> 9300 Endeavor Dr. SE, Calgary Alberta, T3S 0A1<br /><a style="color:white; text-decoration:none;" href="mailto:info@gar.ca">info@galer.ca</a>
</div>

<img src="images/visamastercardlogos.gif" id="visamastercardlogos" alt="Visa and Mastercard Logo" title="Visa and Mastercard Logo">

<a href="#"><img id="mycart" src="images/mycart.gif" alt="My Cart" title="My Cart"></a>
</div>
</div>
</div>
</div>

<script>
<!--
var autoSizeText;
autoSizeText = function() {
  var el, elements, _i, _len, _results;
  elements = $('.resize');
  console.log(elements);
  if (elements.length < 0) {
    return;
  }
  _results = [];
  for (_i = 0, _len = elements.length; _i < _len; _i++) {
    el = elements[_i];
    _results.push((function(el) {
      var resizeText, _results1;
      resizeText = function() {
        var elNewFontSize;
        elNewFontSize = (parseInt($(el).css('font-size').slice(0, -2)) - 1) + 'px';
        return $(el).css('font-size', elNewFontSize);
      };
      _results1 = [];
      while (el.scrollHeight > el.offsetHeight) {
        _results1.push(resizeText());
      }
      return _results1;
    })(el));
  }
  return _results;
};

autoSizeText(); // here is where we call the function.
</script>
</body>
</html>
<?php 
$sql = "SELECT COUNT(orderid) FROM used_trailers1";
$rs_result = mssql_query($sql, $connection); 
$row = mssql_fetch_row($rs_result); 
$total_records = $row[0]; 
$total_pages = ceil($total_records / 4); 

$sqlef = 'SELECT * FROM used_trailers1';
$rs_resultt = mssql_query($sqlef, $connection); 
$rowcount = mssql_num_rows($rs_resultt);

$record_start = $start_from + 1;
$record_end   = $record_start + 3;

// Remember to check against the max record
if ($record_end > $total_records) {
   $record_end = $total_records;
}

    echo "Showing ".$record_start." - ".$record_end." of ".$rowcount." results ";
    echo "asd<a href='usedunits.php?page=".$i."'>".$i."</a>";
for ($i=1; $i<=$total_pages; $i++) { 
            echo "<a href='usedunits.php?page=".$i."'>".$i."</a> "; 
}; 
?>
我已将代码更改为$sql=选择TOP$start\u from*from used\u trailers1 ORDER BY orderid;。我知道这不是我要找的,因为在第1页上显示了0行。第二页显示4行,第三页显示8行。有没有一种方法可以在其中添加最多4个限制

谢谢你的帮助。感谢所有帮助。

限制条款接受数字。由于使用单引号将$start_从括起来,因此它被解释为varchar文本,这是LIMIT语法所不允许的。只要放下它们,你就会没事了:

$sql = "SELECT * FROM used_trailers1 ORDER BY orderid ASC LIMIT $start_from, 4";

LIMIT子句必须由integar而不是varchar追加。尝试使用任何静态整数值,而不是$start\u from。

为了帮助登录到此页面的用户,应该使用TOP来限制mssql\u查询的结果

例如:


我仍然收到错误警告:mssql_query[function.mssql query]:消息:靠近“LIMIT”的语法不正确。第8行D:\Hosting\4502990\html\sales\usedunits.php中的严重性为15警告:mssql_query[function.mssql query]:第8行D:\Hosting\4502990\html\sales\usedunits.php中的查询失败“LIMIT”附近的语法不正确。我的代码当前是$sql=SELECT*FROM used\u trailers1 ORDER BY orderid ASC LIMIT$start\u FROM,4;。这在使用MySQL之前是有效的,但我现在必须使用MSSQL。我试过$start\u from=1*4;我也有同样的错误。既然你写过应该使用这种方法,你能详细说明一下这比@Mureinik using LIMIT提出的解决方案好多少吗?@fejese这比LIMIT好,因为LIMIT在T-SQL中不是一个有效的关键字这也让我感到奇怪。我对SQL Server不太熟悉。它可能在早期版本中可用。此外,此顶部选项不友好。但我没有找到其他选择。有些版本还支持偏移。我没怎么查过。
mssql_query( "select top 10 * from tablename" );