2015-10-07 2 views
0

Я получаю ошибку «Undeclared variable: $start» при использовании SQL-запроса ниже.Ошибка Sql при использовании «LIMIT».

<?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, но не ЗАКАЗАТЬ? Скудно странно. – jarlh

+2

@jarlh - зависит от того, является ли таблица большой или небольшой - или если он хочет заказать по умолчанию первичный ключ. Заказ 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

Попробуйте это: (другой путь в установлении лимита и Offset)

<?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.

+0

Другой член команды _try this club_ Пожалуйста, объясните, почему мы должны попробовать это. _Попробуйте эти ответы_ получить в очереди низкого качества и часто удаляются – RiggsFolly

+0

Лучше, но вы получаете только половину короны – RiggsFolly

+0

@Hard Spocker Я пробовал этот код, но получал ошибку «Undeclared variable OFFSET» –

0

Вы оставили из пространства между LIMIT а также '. Должно быть, это было

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

Вы делаете создание запроса слишком сложным, и поэтому отсутствуют некоторые простые ошибки. Помните, что когда вы используете двойные quoutes " в 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. поэтому он даст правильное руководство для вашей структуры запроса или любой ошибки для того же самого.