ORA-00911: invalid character error..pls help!!!

hi experts,

I'm having a problem of running a sql statement below using oci. Error appear as below:


//Query to get number of ticket by status
  $query = "SELECT DISTINCT events.t_id, t_summary, t_category, ";
  $query .= "e_status, e_assignedto,t_priority, t_user,t_timestamp_opened, ";
  $query .= "e_timestamp, events.e_id, t_id2, category.c_name, t_status ";
  $query .= "FROM ticket, events, tmpeid, category ";
  $query .= "WHERE ticket.t_id=events.t_id";
  $query .= " AND (events.e_id=tmpeid.e_id)";

  $query .= " AND (ticket.t_category = category.c_id)";
  //$query .= " AND (contact.country = '$usercountry')";
  //zamir buang contact.country, dari query

  if (($type == r) || ($type == 'or')){
          //$query .= " AND (contact.country = '$usercountry')";
    $query .= " AND (events.e_assignedto='$rep_contact_id')";
  }
  if ($type == c) {
    $query .= " AND (ticket.t_id2 LIKE \"$usercountry%\")";
  }
  if ($type == o) {
          //$query .= " AND (ticket.t_id2 LIKE \"$countryid%\")";
  }       $query .= " AND (events.e_assignedto='$rep_contact_id')";
  $query .= "$queryorderby";
  //echo "<br>$query<br>";
  $stmt2 = OCIParse($oci_link,$query);
  OCIExecute($stmt2); //line 120 here


error:
Warning: OCIStmtExecute: ORA-00911: invalid character in c:\apache group\apache\htdocs\oictrade1\scripts\vj_viewtickets.scp.php on line 120



pls help me

TQ
zamirjalilAsked:
Who is Participating?
 
Hamlet081299Connect With a Mentor Commented:
aha ... as noted in my previous comment, I believe the problem is with the ";" on the end of any of your order by clauses.

Try removing all of these, for example...

$queryorderby = " order by t_summary, t_timestamp_opened;";

... should be ...

$queryorderby = " order by t_summary, t_timestamp_opened";


OCIParse will not like that semicolon.


I hope that's it because I'll be offline shortly.
0
 
Hamlet081299Commented:
Please indicate likely value of $type...
0
 
zamirjalilAuthor Commented:
ok Hamlet ..

$type = c
0
Cloud Class® Course: Certified Penetration Testing

This CPTE Certified Penetration Testing Engineer course covers everything you need to know about becoming a Certified Penetration Testing Engineer. Career Path: Professional roles include Ethical Hackers, Security Consultants, System Administrators, and Chief Security Officers.

 
Hamlet081299Commented:
Looks like it could be a problem with the double quotes used in a couple of places...

Change...

   $query .= " AND (ticket.t_id2 LIKE \"$usercountry%\")";

... to ...

   $query .= " AND (ticket.t_id2 LIKE '$usercountry%')";

Likewise anywhere else where \" has been used around string values.

This is because double quotes are for column names.
0
 
zamirjalilAuthor Commented:
ok Hamlet ..

$type = c
0
 
zamirjalilAuthor Commented:
Hemlet..

I paste the code after change it below:
  if (($type == 'r') || ($type == 'or')){
          //$query .= " AND (contact.country = '$usercountry')";
    $query .= " AND (events.e_assignedto='$rep_contact_id')";
  }
  if ($type == 'c') {
    $query .= " AND (ticket.t_id2 LIKE '$usercountry%')";
  }
  if ($type == 'o') {
          $query .= " AND (ticket.t_id2 LIKE '$countryid%')";
  }       //$query .= " AND (events.e_assignedto='$rep_contact_id')";
  $query .= "$queryorderby";
  //echo "<br>$query<br>";
  $stmt2 = OCIParse($oci_link,$query);
  OCIExecute($stmt2);

  $num_pending =0;
  $num_open=0;
  $num_cancel=0;
  $num_closed=0;
  $num_registered=0;

            while (OCIFetch($stmt2)){ //line 128 here



i still got the same error

Warning: OCIStmtExecute: ORA-00911: invalid character in c:\apache group\apache\htdocs\oictrade1\scripts\vj_viewtickets.scp.php on line 120

and

Warning: OCIFetch: ORA-24374: define not done before fetch or execute and fetch in c:\apache group\apache\htdocs\oictrade1\scripts\vj_viewtickets.scp.php on line 128


0
 
Hamlet081299Commented:
Put an echo after the OCIParse like this ...

$stmt2 = OCIParse($oci_link,$query);
echo $stmt2;

... and have a look at that.
0
 
Hamlet081299Commented:
What is the value of $queryorderby ?
0
 
Hamlet081299Commented:
Probably the best thing is to do an echo of $query, just before the OCIParse.  If you post that I'm sure I'll see the problem.

I suspect it'll be one of these things...

* Use of " instead of '
* A semi-colon at the end of the query
* Missing a space between some tokens
0
 
zamirjalilAuthor Commented:
Hemlet..

I paste the code after change it below:
  if (($type == 'r') || ($type == 'or')){
          //$query .= " AND (contact.country = '$usercountry')";
    $query .= " AND (events.e_assignedto='$rep_contact_id')";
  }
  if ($type == 'c') {
    $query .= " AND (ticket.t_id2 LIKE '$usercountry%')";
  }
  if ($type == 'o') {
          $query .= " AND (ticket.t_id2 LIKE '$countryid%')";
  }       //$query .= " AND (events.e_assignedto='$rep_contact_id')";
  $query .= "$queryorderby";
  //echo "<br>$query<br>";
  $stmt2 = OCIParse($oci_link,$query);
  OCIExecute($stmt2);

  $num_pending =0;
  $num_open=0;
  $num_cancel=0;
  $num_closed=0;
  $num_registered=0;

            while (OCIFetch($stmt2)){ //line 128 here



i still got the same error

Warning: OCIStmtExecute: ORA-00911: invalid character in c:\apache group\apache\htdocs\oictrade1\scripts\vj_viewtickets.scp.php on line 120

and

Warning: OCIFetch: ORA-24374: define not done before fetch or execute and fetch in c:\apache group\apache\htdocs\oictrade1\scripts\vj_viewtickets.scp.php on line 128


0
 
zamirjalilAuthor Commented:
hemlet..

after put echo , it display:
stmt2 =Resource id #8

what does it mean?


$queryorderby is as follows:



if ($orderby == "t_summary") {
       if (isset($tmp_t_summary)) {
        $queryorderby = " order by t_summary, t_timestamp_opened;";
      }
        else {
        $queryorderby = " order by t_summary DESC, t_timestamp_opened;";
      }
   }
   elseif ($orderby == "t_category") {
       if (isset($tmp_t_category)) {
        $queryorderby = " order by t_category, t_timestamp_opened;";
      }
        else {
        $queryorderby = " order by t_category DESC, t_timestamp_opened;";
      }
   }
   elseif ($orderby == "e_status") {
      if (isset($tmp_e_status)) {
        $queryorderby = " order by e_status, t_timestamp_opened;";
      }
              else {
        $queryorderby = " order by e_status DESC, t_timestamp_opened;";
      }
   }
   elseif ($orderby == "t_user") {
      if (isset($tmp_t_user)) {
        $queryorderby = " order by e_assignedto, t_timestamp_opened;";
      }
      else {
        $queryorderby = " order by e_assignedto DESC, t_timestamp_opened;";
      }
    }
   elseif ($orderby == "t_id") {
      if (isset($tmp_t_id)) {
        $queryorderby = " ORDER BY t_id, t_timestamp_opened;";
      }
      else {
        $queryorderby = " ORDER BY t_id DESC, t_timestamp_opened;";
      }
    }
   elseif ($orderby == "t_timestamp_opened") {
      if (isset($tmp_t_timestamp_opened)) {
        $queryorderby = " order by t_timestamp_opened;";
      }
      else {
        $queryorderby = " order by t_timestamp_opened DESC;";
      }
    }
   else {
      if (isset($tmp_t_priority)) {
        $queryorderby = " ORDER BY t_priority DESC;"; //, t_timestamp_opened;";
      }
      else {
        $queryorderby = " ORDER BY t_priority;"; //, t_timestamp_opened;";
      }
   }
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.