Solved

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

Posted on 2002-07-11
11
1,642 Views
Last Modified: 2012-08-13
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
0
Comment
Question by:zamirjalil
  • 6
  • 5
11 Comments
 
LVL 5

Expert Comment

by:Hamlet081299
ID: 7145466
Please indicate likely value of $type...
0
 

Author Comment

by:zamirjalil
ID: 7145470
ok Hamlet ..

$type = c
0
 
LVL 5

Expert Comment

by:Hamlet081299
ID: 7145472
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
 

Author Comment

by:zamirjalil
ID: 7145496
ok Hamlet ..

$type = c
0
 

Author Comment

by:zamirjalil
ID: 7145505
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
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 
LVL 5

Expert Comment

by:Hamlet081299
ID: 7145513
Put an echo after the OCIParse like this ...

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

... and have a look at that.
0
 
LVL 5

Expert Comment

by:Hamlet081299
ID: 7145522
What is the value of $queryorderby ?
0
 
LVL 5

Expert Comment

by:Hamlet081299
ID: 7145524
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
 

Author Comment

by:zamirjalil
ID: 7145586
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
 

Author Comment

by:zamirjalil
ID: 7145591
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
 
LVL 5

Accepted Solution

by:
Hamlet081299 earned 50 total points
ID: 7145617
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

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

These days socially coordinated efforts have turned into a critical requirement for enterprises.
Introduction This article is intended for those who are new to PHP error handling (https://www.experts-exchange.com/articles/11769/And-by-the-way-I-am-New-to-PHP.html).  It addresses one of the most common problems that plague beginning PHP develop…
The viewer will learn how to dynamically set the form action using jQuery.
The viewer will learn how to create a basic form using some HTML5 and PHP for later processing. Set up your basic HTML file. Open your form tag and set the method and action attributes.: (CODE) Set up your first few inputs one for the name and …

912 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

20 Experts available now in Live!

Get 1:1 Help Now