Log in

View Full Version : mysql query error ...



pepe_lepew1962
09-18-2011, 07:09 PM
Hello:

I am having a problem fixing/understanding a recent error message. Basically, I have a search form that after validation and filtering stores the variable into a session. Another page/file opens and loads that search field. Everything has always worked but I recently added pagination and suddenly this program no longer works. Any assistance would greatly be appreciated.


php version=5.3.1
mysql version=5.1.41


Error:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ASC LIMIT 0,10' at line 1


Pagination:
http://www.catchmyfame.com/2007/07/28/finally-the-simple-pagination-class/



Here is the shortened version of the code:


include('../pagination/paginator.php');
$searcher = $_SESSION['sessearchcode'];

$query = "SELECT COUNT(*) FROM tblLoad, tblCode WHERE (tblLoad_LoadID = tblCode_CodeID) AND tblCode_Manufact LIKE '%$searcher%'";
$result = mysql_query($query) or die(mysql_error());
$num_rows = mysql_fetch_row($result);

$pages = new Paginator;
$pages->items_total = $num_rows[0];
$pages->mid_range = 9; // Number of pages to display. Must be odd and > 3
$pages->paginate();

$query = "SELECT tblLoad_LoadID, tblLoad_Company, tblLoad_State, tblCode_CodeID from tblLoad, tblCode WHERE (tblLoad_LoadID = tblCode_CodeID) AND tblCode_Manufact LIKE '%$searcher%' ASC $pages->limit";
$result = mysql_query($query) or die(mysql_error());


Thank You.

traq
09-18-2011, 09:52 PM
you'd have to show us an example of the output SQL statement to be sure, but it looks like you're using ASC without an order by clause:
SELECT whatever FROM sometable WHERE col LIKE 'searchterm' ORDER BY some_col ASC LIMIT 0,10also, since ASC is the default, you don't really need to specify it. Simply using "ORDER BY" will produce the same result.

Butterfly
09-21-2011, 05:52 PM
Here is the problem, as @traq explained:

$query = "SELECT tblLoad_LoadID, tblLoad_Company, tblLoad_State, tblCode_CodeID from tblLoad, tblCode WHERE (tblLoad_LoadID = tblCode_CodeID) AND tblCode_Manufact LIKE '%$searcher%' ASC $pages->limit";

You may remove the ASC completely as you probably don't need an ORDER BY clause.

traq
09-21-2011, 06:54 PM
You may remove the ASC completely as you probably don't need an ORDER BY clause.

I wouldn't go so far as to say that without knowing more about what the OP is trying to do. Not ordering your results typically returns rows in the order they were saved - which may or may not be what they want, but would almost certainly give a different result than ordered results would.

(also, pepe_lepew, please note my edited post above.)

pepe_lepew1962
09-21-2011, 07:27 PM
Yeah, I was missing the ORDER BY.
Thanks

Butterfly
09-21-2011, 08:09 PM
I wouldn't go so far as to say that without knowing more about what the OP is trying to do. Not ordering your results typically returns rows in the order they were saved - which may or may not be what they want, but would almost certainly give a different result than ordered results would.

Correct, I was only explaining the origin of the error.