Jump to content

[SOLVED] Strange Oracle Query problem


mikesta707

Recommended Posts

Ok So I have this PHP class that talks to a Javascript class that basically creates a table of information from a database query and puts it in a sortable, filterable table. This all works fine and dandy.

 

Well, i have had the need for some semi-dynamic functionality (changing the table of the query, or changing some other detail) which I accomplished using GETS. This also worked perfectly

 

I wanted to try to add some AJAX functionality in place of the GET functionality, so I changed things around a bit, and now I am sending an xmlhttprequest to my php page. this requests fine. however, I do not get back the information I want. Here is the PHP page that I send the request to

 

require('page.php');
function getAssoc($query, $table){
$svname = 'list_users';
$svuser = 'dmitriyy';
$svpass = 'dmitriyy';
$oracle = new oracle($svname, $svuser, $svpass);
//var_dump($oracle);
$query = str_replace('REPLACE_ME', $table, $query);
//var_dump($query);
//echo $query."<br />";
//echo "execute is here bitch";
echo $query;
$execute = $oracle->query$query);
while(OCIFetchInto($execute, $results, OCI_ASSOC)){
	if ($data == null){
		$data = array();
		$data[] = $results;
	}
	else {
		$data[] = $results;
	}
}
return $data;

}

$query = $_GET['q'];
$table = $_GET['t'];

print_r(getAssoc($query, $table));
echo "done with print_r";
//echo json_encode(getAssoc($query, $table));

 

page.php (just a small class that does some oracle database connection and query stuff. This class DOES work, as I use it everywhere)

class oracle {
	//class variables
	var $connection;

	/*Constructor
	*Input (Server name, server usename, server password. By default
	*server name is localhost, and password and user are blank
	*returns true if connection was successful, false if not
	*/
	function oracle($svname, $svuser, $svpass){
		//echo "<script type='text/javascript'>alert('".$svname."');</script>";
		try {
			$conn = oci_connect($svuser, $svpass, $svname);
			if (!$conn){
				throw new Exception("Error");
			}
		}
		catch(Exception $e){
			trigger_error($e->getMessage());
			exit();
		}
		$this->connection = $conn;
		if (!$conn){
			echo "<script type='text/javascript'>alert('COULD NOT CONNECT');</script>";
			return false;
		}
		return true;
	}//end Constructor

	//class functions

	/*query_valid
	*Input: A query String
	*Returns the string if it is valid. String cannot have insert or update commands
	*returns false if it does
	*/
	public function is_valid($string){
		$temp = strtoupper($string);
		$invalid_commands = array("INSERT", "DELETE", "UPDATE", "DROP", "TRUNCATE", "APPEND");
		foreach($invalid_commands as $c){
			if (strpos($temp, $c) !== false){
				return false;
			}
		}
		return true;
	}

	/*query
	*Input: A (hopefully valid) oracle query
	*returns the parsed query if execution was valid
	*returns false if not
	*/
	public function query($query){
		if (!$this->is_valid($query)){
			die ("Query Contains Illegal Command! Exiting script");
		}

		$do = oci_parse($this->connection, $query);
		$go = oci_execute($do);

		if (!$go){
			return false;
		}
		return $do;
	}

	/*BubbleSort2
	*Sorts a 2d array, based on a certain column (sorts numerically)
	*returns the sorted array
	*/
	public function BubbleSort2($sort_array,$column = 0,$reverse = true){	
	  $lunghezza=count($sort_array);
	  for ($i = 0; $i < $lunghezza ; $i++){
		for ($j = $i + 1; $j < $lunghezza ; $j++){
		  if($reverse){
			if ($sort_array[$i][$column] < $sort_array[$j][$column]){
			  $tmp = $sort_array[$i];
			  $sort_array[$i] = $sort_array[$j];
			  $sort_array[$j] = $tmp;
			}
		  }else{
			if ($sort_array[$i][$column] > $sort_array[$j][$column]){
			  $tmp = $sort_array[$i];
			  $sort_array[$i] = $sort_array[$j];
			  $sort_array[$j] = $tmp;
			}
		  }
		}
	  }
	  return $sort_array;
	}

}

 

ignore the bubblesort

 

On the ajax page (the first snippet) everything seems to work fine until I try to build that data array. It just returns empty. I have verified that it is the exact same query on the main page (which executes the query successfully) and the ajax page.

 

One thing to note. I pass the query from php to javascript, and then back to PHP again. I use json_decode when passing to javascript from PHP. However, this doesn't seem to have an effect on the query, as I checked them, and they appear to be the same. Im really at a loss for why this isn't working.

 

is what i'm trying to do possible? I think it is but im not sure any more... anyone have any insight

Link to comment
https://forums.phpfreaks.com/topic/177581-solved-strange-oracle-query-problem/
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.