Syntax error MySQL 5.0 and PHP 5

Anonymous
Anonymous's picture

I'm getting the following 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 ') LEFT OUTER JOIN `employees` AS lp1 ON (t1.`gevity_number` = lp1.) LEFT OUTER J' at line 1

Here is the surrounding code:

$filterstr = sqlstr($filter);
  if (!$wholeonly && isset($wholeonly) && $filterstr!='') $filterstr = "%" .$filterstr ."%";
  $sql = "SELECT * FROM (SELECT t1.`employee_name`, lp0.`employee_name` AS `lp_employee_name`, t1.`gevity_number`, lp1.`GevityNo` AS `lp_gevity_number`, t1.`reference_number`, t1.`claim_number`, t1.`date_entered`, t1.`accident_date`, t1.`accident_time`, t1.`accident_location`, lp7.`location_name` AS `lp_accident_location`, t1.`accident_description`, t1.`start_time_lost`, t1.`end_time_lost`, t1.`first_treat_physician`, t1.`first_treat_phy_phone`, t1.`first_treat_phy_address`, t1.`first_fax`, t1.`primary_treat_center`, t1.`primary_address`, t1.`primary_phone`, t1.`primary_fax`, t1.`claim_adj_name`, t1.`claim_adj_address`, t1.`claim_adj_phone`, t1.`claim_adj_email`, t1.`claim_adj_fax` FROM `accidents` AS t1 LEFT OUTER JOIN `employees` AS lp0 ON (t1.`employee_name` = lp0.) LEFT OUTER JOIN `employees` AS lp1 ON (t1.`gevity_number` = lp1.) LEFT OUTER JOIN `location` AS lp7 ON (t1.`accident_location` = lp7.)) subq";
  if (isset($filterstr) && $filterstr!='' && isset($filterfield) && $filterfield!='') {
    $sql .= " where " .sqlstr($filterfield) ." like '" .$filterstr ."'";
  } elseif (isset($filterstr) && $filterstr!='') {
    $sql .= " where (`lp_employee_name` like '" .$filterstr ."') or (`reference_number` like '" .$filterstr ."') or (`claim_number` like '" .$filterstr ."') or (`accident_date` like '" .$filterstr ."') or (`accident_time` like '" .$filterstr ."') or (`lp_accident_location` like '" .$filterstr ."') or (`accident_description` like '" .$filterstr ."') or (`start_time_lost` like '" .$filterstr ."') or (`end_time_lost` like '" .$filterstr ."') or (`first_treat_physician` like '" .$filterstr ."') or (`first_treat_phy_phone` like '" .$filterstr ."') or (`first_treat_phy_address` like '" .$filterstr ."') or (`first_fax` like '" .$filterstr ."') or (`primary_treat_center` like '" .$filterstr ."') or (`primary_address` like '" .$filterstr ."') or (`primary_phone` like '" .$filterstr ."') or (`primary_fax` like '" .$filterstr ."') or (`claim_adj_name` like '" .$filterstr ."') or (`claim_adj_address` like '" .$filterstr ."') or (`claim_adj_phone` like '" .$filterstr ."') or (`claim_adj_email` like '" .$filterstr ."') or (`claim_adj_fax` like '" .$filterstr ."')";
  }
  if (isset($order) && $order!='') $sql .= " order by `" .sqlstr($order) ."`";
  if (isset($ordtype) && $ordtype!='') $sql .= " " .sqlstr($ordtype);
  $res = mysql_query($sql, $conn) or die(mysql_error());
  return $res;
}

Anyone see where the ') is near "LEFT OUTER JOIN `employees` AS lp1 ON " in that code, or where it might be throwing that error from? This has been driving me insane trying to track this one down.

Thanks in advance if you can help.

Keith

G&G Podcast Host
Matt Farina's picture
Joined: 06/01/2006
right before the error

If you search the code for the error you'll see that right before it you have "t1.`employee_name` = lp0."

Notice how this ends in a period. There should be something after the period. A column name in this case.

Matt Farina
Geeks and God Former Co-Host
www.mattfarina.com

me
Anonymous's picture
Got it working. You were

Got it working. You were right. Thanks, and God Bless.