Sql 使用 "LIMIT" 时出错。

Sql error while using "LIMIT".

我在使用下面的 SQL 查询时遇到错误“Undeclared variable: $start”。

<?php
  if($Spage == ""){
     $Spage = "1";
  }
  $Sper_page = "5"; 
  $start = ($Spage-1)*$Sper_page;
  $sResults = $oCon->dbFetchSmarty("SELECT * FROM experts WHERE exp_process LIKE '%".$process."%' AND exp_machinaries like '%".$machineCat."%' AND exp_country = '". $country."' 'LIMIT $start, $Sper_page'");
?>

试试这个:(另一种设置限制和偏移的方法)

<?php
  if($Spage == ""){
     $Spage = "1";
  }
  $Sper_page = "5"; 
  $start = ($Spage-1)*$Sper_page;
  $sResults = $oCon->dbFetchSmarty("SELECT * FROM experts WHERE exp_process LIKE '%".$process."%' AND exp_machinaries like '%".$machineCat."%' AND exp_country = '". $country."'LIMIT $per_page OFFSET $start'");
?>

顺便说一句,您错放了 LIMIT 附近的单引号。

你弄乱了你的单引号。应该是

$sResults = $oCon->dbFetchSmarty("SELECT * FROM experts WHERE exp_process LIKE '%".$process."%' AND exp_machinaries like '%".$machineCat."%' AND exp_country = '". $country."' LIMIT $start, $Sper_page");

稍微清理一下查询:

$sResults = $oCon->dbFetchSmarty("SELECT * FROM experts WHERE exp_process LIKE '%$process%' AND exp_machinaries like '%$machineCat%' AND exp_country = '$country' LIMIT $start, $Sper_page");

删除的下一步是使用准备好的语句并将这些参数绑定到

您在 LIMIT 和 '. 之间遗漏了一个 space。 一定是

$country."' '   LIMIT  .  ........

您使查询的创建过于复杂,因此遗漏了一些简单的错误。请记住,当您在 PHP 中使用双引号 " 时,它会为您将 $variables 扩展为字符串。

因此,更简单易读的调试方法就是这个

$sql = "SELECT * FROM experts 
        WHERE exp_process LIKE '%$process%' 
          AND exp_machinaries like '%$machineCat%' 
          AND exp_country = '$country' 
        LIMIT $start, $Sper_page";

$sResults = $oCon->dbFetchSmarty($sql);

检查查询的最佳解决方案是在 phpmyadmin 中。您只需将查询和 copy/past 查询部分回显到 phpmyadmin 中。因此它将为您的查询结构或任何错误提供正确的指导。