使用“LIMIT”时出现Sql错误。

时间:2015-10-07 11:23:23

标签: php sql limit sql-like

我在使用下面的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'");
?>

5 个答案:

答案 0 :(得分:1)

你搞砸了你的单引号。应该是

$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");

要删除的下一步是使用预准备语句并在

中绑定这些参数

答案 1 :(得分:0)

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

<?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附近错放了一句话。

答案 2 :(得分:0)

你在LIMIT和'之间省略了一个空格。 一定是

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

答案 3 :(得分:0)

您的查询创建过于复杂,因此缺少一些简单的错误。请记住,当您在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);

答案 4 :(得分:0)

检查查询的最佳解决方案是在phpmyadmin中。您只需将查询和复制/过去的查询部分回显到phpmyadmin。所以它会为你的查询结构或任何错误提供适当的指导。