2015-10-07 216 views
0

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

<?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'"); 
?> 
+0

LIMIT但没有ORDER BY?有点奇怪。 – jarlh

+2

@jarlh - 取决于表格是大还是小 - 或者他是否希望按默认主键排序。根据用例,Order By不是必须的,缺少它并不是那么奇怪。 – Gravy

回答

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

下一步删除是使用准备好的语句,并结合这些参数在

+0

它的工作!谢谢。 –

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'"); 
?> 

而且顺便说一句,你放错地方的接近极限的单引号。

+0

_try this club_的另一个成员_请解释为什么我们应该试试这个。 _尝试这个答案_获取投入低质量队列,并经常删除 – RiggsFolly

+0

更好,但你只得到一半光环 – RiggsFolly

+0

@硬Spocker我试过这个代码,但得到错误“Undeclared variable OFFSET” –

0

你忽略了LIMIT之间的空间和'。 它一定是

$country."' ' LIMIT . ........ 
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); 
0

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