2015-10-07 37 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。因此它會爲您的查詢結構或任何錯誤提供適當的指導。