PHP Warning: You have an error in your SQL syntax;

Discussion in 'Site & Server Administration' started by bbrian017, Sep 5, 2011.

  1. #1
    Hi guys,

    The Cron e-mail keeps sending me this message when I try to run an rss importer. I'm running the script on three websites and only this website is throwing the error.

    The odd thing is it appears to be working but it's still throwing this error,

    any suggestions?

    PHP Warning:  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 '' at line 1 in /var/www/vhosts/websitename.com/httpdocs/libs/db.php on line 242
    Code (markup):
    This is the file.

    <?php
    
    if(!defined('mnminclude')){header('Location: ../404error.php');die();}
    
    	include_once(dirname(__FILE__).'/ez_sql_core.php');
    	include_once(dirname(__FILE__).'/dbconnect.php');
    
    	/**********************************************************************
    	*  Author: Justin Vincent (justin@visunet.ie)
    	*  Web...: http://php.justinvincent.com
    	*  Name..: ezSQL_mysql
    	*  Desc..: mySQL component (part of ezSQL databse abstraction library)
    	*
    	*/
    
    	/**********************************************************************
    	*  ezSQL error strings - mySQL
    	*/
    
    	$ezsql_mysql_str = array
    	(
    		1 => '<h2>Error establishing a database connection!</h2><ol><li>Are you sure you have the correct user/password?<li>Are you sure that you have typed the correct hostname?<li>Are you sure that the database server is running?<li>Have you run the <a href = "./install/install.php">Pligg Installer?</a></ol>',
    		2 => 'Error establishing mySQL database connection. Correct user/password? Correct hostname? Database server running?',
    		3 => 'Require $dbname to select a database',
    		4 => 'MySQL database connection is not active',
    		5 => 'Unexpected error while trying to select database'
    	);
    
    	/**********************************************************************
    	*  ezSQL Database specific class - mySQL
    	*/
    
    	if ( ! function_exists ('mysql_connect') ) die('<b>Fatal Error:</b> ezSQL_mysql requires mySQL Lib to be compiled and or linked in to the PHP engine');
    	if ( ! class_exists ('ezSQLcore') ) die('<b>Fatal Error:</b> ezSQL_mysql requires ezSQLcore (ez_sql_core.php) to be included/loaded before it can be used');
    
    	class ezSQL_mysql extends ezSQLcore
    	{
    
    		var $dbuser = false;
    		var $dbpassword = false;
    		var $dbname = false;
    		var $dbhost = false;
    
    		/**********************************************************************
    		*  Constructor - allow the user to perform a qucik connect at the
    		*  same time as initialising the ezSQL_mysql class
    		*/
    
    		function ezSQL_mysql($dbuser='', $dbpassword='', $dbname='', $dbhost='localhost')
    		{
    			$this->dbuser = $dbuser;
    			$this->dbpassword = $dbpassword;
    			$this->dbname = $dbname;
    			$this->dbhost = $dbhost;
    		}
    
    		/**********************************************************************
    		*  Short hand way to connect to mySQL database server
    		*  and select a mySQL database at the same time
    		*/
    
    		function quick_connect($dbuser='', $dbpassword='', $dbname='', $dbhost='localhost')
    			{
    			$return_val = false;
    			if ( ! $this->connect($dbuser, $dbpassword, $dbhost,true) ) ;
    			else if ( ! $this->select($dbname) ) ;
    			else $return_val = true;
    			return $return_val;
    			}
    
    		/**********************************************************************
    		*  Try to connect to mySQL database server
    		*/
    
    		function connect($dbuser='', $dbpassword='', $dbhost='localhost')
    		{
    			global $ezsql_mysql_str; $return_val = false;
    
    			// Must have a user and a password
    			if ( ! $dbuser )
    			{
    				$this->register_error($ezsql_mysql_str[1]);
    				//$this->show_errors ? trigger_error($ezsql_mysql_str[1],E_USER_WARNING) : null;
    				die($ezsql_mysql_str[1]);
    			}
    			// Try to establish the server database handle
    			else if ( ! $this->dbh = @mysql_connect($dbhost,$dbuser,$dbpassword,true) )
    			{
    				$this->register_error($ezsql_mysql_str[2].' in '.__FILE__.' on line '.__LINE__);
    				$this->show_errors ? trigger_error($ezsql_mysql_str[2],E_USER_WARNING) : null;
    			}
    			else
    			{
    				if($this->log_to_file){
    					$fh=fopen($this->logfile,"a");
    					fwrite($fh,"Connect - " . date("Y-m-d H:i:s", time()) . " - " . $_SERVER['REQUEST_URI'] ."\n");
    					fclose($fh);
    				}
    
    				mysql_query ("SET time_zone = '".date("P")."'");
    				mysql_query( 'set names utf8' );
    				mysql_query ("set character_set_client='utf8'");
    				mysql_query ("set character_set_results='utf8'");
    				mysql_query ("set collation_connection='utf8_general_ci'");
    				
    				$this->dbuser = $dbuser;
    				$this->dbpassword = $dbpassword;
    				$this->dbhost = $dbhost;
    				$return_val = true;
    			}
    
    			return $return_val;
    		}
    
    		/**********************************************************************
    		*  Try to select a mySQL database
    		*/
    
    		function select($dbname='')
    		{
    			global $ezsql_mysql_str; $return_val = false;
    
    			// Must have a database name
    			if ( ! $dbname )
    		{
    				$this->register_error($ezsql_mysql_str[3].' in '.__FILE__.' on line '.__LINE__);
    				$this->show_errors ? trigger_error($ezsql_mysql_str[3],E_USER_WARNING) : null;
    			}
    
    			// Must have an active database connection
    			else if ( ! $this->dbh )
    			{
    				$this->register_error($ezsql_mysql_str[4].' in '.__FILE__.' on line '.__LINE__);
    				$this->show_errors ? trigger_error($ezsql_mysql_str[4],E_USER_WARNING) : null;
    			}
    
    			// Try to connect to the database
    			else if ( !@mysql_select_db($dbname,$this->dbh) )
    			{
    				// Try to get error supplied by mysql if not use our own
    				if ( !$str = @mysql_error($this->dbh))
    					  $str = $ezsql_mysql_str[5];
    
    				$this->register_error($str.' in '.__FILE__.' on line '.__LINE__);
    				$this->show_errors ? trigger_error($str,E_USER_WARNING) : null;
    			}
    			else
    			{
    				$this->dbname = $dbname;
    				$return_val = true;
    			}
    
    			return $return_val;
    		}
    
    		/**********************************************************************
    		*  Format a mySQL string correctly for safe mySQL insert
    		*  (no mater if magic quotes are on or not)
    		*/
    
    		function escape($str)
    		{
    			return mysql_escape_string($str);
    		}
    
    		/**********************************************************************
    		*  Return mySQL specific system date syntax
    		*  i.e. Oracle: SYSDATE Mysql: NOW()
    		*/
    
    		function sysdate()
    		{
    			return 'NOW()';
    		}
    
    		/**********************************************************************
    		*  Perform mySQL query and try to detirmin result value
    		*/
    
    		function query($query)
    		{
    
    			// Initialise return
    			$return_val = 0;
    
    			// Flush cached values..
    			$this->flush();
    
    			// For reg expressions
    			$query = trim($query);
    
    			// Log how the function was called
    			$this->func_call = "\$db->query(\"$query\")";
    
    			// Keep track of the last query for debug..
    			$this->last_query = $query;
    
    			// Count how many queries there have been
    			$this->num_queries++;
    
    			// Use core file cache function
    			if ( $cache = $this->get_cache($query) )
    			{
    				return $cache;
    			}
    
    			// If there is no existing database connection then try to connect
    			if ( ! isset($this->dbh) || ! $this->dbh )
    			{
    				$this->connect($this->dbuser, $this->dbpassword, $this->dbhost);
    				$this->select($this->dbname);
    			}
    
    			if($this->log_to_file){
    				$mtime = microtime(); 
    				$mtime = explode(' ', $mtime); 
    				$mtime = $mtime[1] + $mtime[0]; 
    				$starttime = $mtime;
    			}
          
    			// Perform the query via std mysql_query function..
    			$this->result = @mysql_query($query,$this->dbh);
    
    			if($this->log_to_file){
    				$mtime = microtime(); 
    				$mtime = explode(" ", $mtime); 
    				$mtime = $mtime[1] + $mtime[0]; 
    				$endtime = $mtime; 
    				$totaltime = ($endtime - $starttime); 
    				//if($totaltime > 0.001) {echo '<hr />' . $totaltime . ' - ' . $query . '<hr />';}
    				
    				$fh=fopen($this->logpath,"a");
    				fwrite($fh,$totaltime . ' - ' . $query . "\n");
    				fclose($fh);
    			}
    			
    			// If there is an error then take note of it..
    			if ( $str = @mysql_error($this->dbh) )
    			{
    				$is_insert = true;
    				$this->register_error($str);
    				$this->show_errors ? trigger_error($str,E_USER_WARNING) : null;
    				return false;
    			}
    
    			// Query was an insert, delete, update, replace
    			$is_insert = false;
    			if ( preg_match("/^(insert|delete|update|replace)\s+/i",$query) )
    			{
    				$this->rows_affected = @mysql_affected_rows();
    
    				// Take note of the insert_id
    				if ( preg_match("/^(insert|replace)\s+/i",$query) )
    				{
    					$this->insert_id = @mysql_insert_id($this->dbh);
    				}
    
    				// Return number fo rows affected
    				$return_val = $this->rows_affected;
    			}
    			// Query was a select
    			else
    			{
    
    				// Take note of column info
    				$i=0;
    				while ($i < @mysql_num_fields($this->result))
    				{
    					$this->col_info[$i] = @mysql_fetch_field($this->result);
    					$i++;
    				}
    
    				// Store Query Results
    				$num_rows=0;
    				while ( $row = @mysql_fetch_object($this->result) )
    				{
    					// Store relults as an objects within main array
    					$this->last_result[$num_rows] = $row;
    					$num_rows++;
    				}
    
    				@mysql_free_result($this->result);
    
    				// Log number of rows the query returned
    				$this->num_rows = $num_rows;
    
    				// Return number of rows selected
    				$return_val = $this->num_rows;
    			}
    
    			// disk caching of queries
    			$this->store_cache($query,$is_insert);
    
    			// If debug ALL queries
    			$this->trace || $this->debug_all ? $this->debug() : null ;
    
    			return $return_val;
    
    		}
    
    	}
    	
    	$db = new ezSQL_mysql(EZSQL_DB_USER, EZSQL_DB_PASSWORD, EZSQL_DB_NAME, EZSQL_DB_HOST);
    	/*
    	$db->show_errors = false;
    	$db->quick_connect(EZSQL_DB_USER, EZSQL_DB_PASSWORD, EZSQL_DB_NAME, EZSQL_DB_HOST);
    	if(count($db->captured_errors) > 0){
    		global $main_smarty, $the_template;
    	
    		if(isset($main_smarty)){
    			$main_smarty->compile_dir = "cache/templates_c/";
    			$main_smarty->template_dir = "templates/";
    			$main_smarty->cache_dir = "cache/";
    			$main_smarty->config_dir = "";
    			$main_smarty->force_compile = false; // has to be off to use cache
    			$main_smarty->display($the_template . '/no_database.tpl');
    			die();
    		}
    	} else {
    		die('Error connection to the database.');
    	}
    	$db->show_errors = true;
    	*/
    	
    ?>
    Code (markup):
    This seems to be that location

    			// If there is an error then take note of it..
    			if ( $str = @mysql_error($this->dbh) )
    			{
    				$is_insert = true;
    				$this->register_error($str);
    				$this->show_errors ? trigger_error($str,E_USER_WARNING) : null;
    				return false;
    			}
    Code (markup):
     
    bbrian017, Sep 5, 2011 IP
  2. Rukbat

    Rukbat Well-Known Member

    Messages:
    2,908
    Likes Received:
    37
    Best Answers:
    51
    Trophy Points:
    125
    #2
    We need to see line 242 of the file db.php
     
    Rukbat, Sep 5, 2011 IP
  3. bbrian017

    bbrian017 Well-Known Member

    Messages:
    2,990
    Likes Received:
    66
    Best Answers:
    0
    Trophy Points:
    170
    #3
    that is the entire file above and the link is

    $this->show_errors ? trigger_error_rss($errormsg, $lvl=E_USER_WARNING) : null;
    Code (markup):
     
    bbrian017, Sep 5, 2011 IP
  4. Rising_Star

    Rising_Star Active Member

    Messages:
    39
    Likes Received:
    1
    Best Answers:
    0
    Trophy Points:
    63
    #4
    if everything is working fine, then do this


    $this->show_errors ? trigger_error_rss($errormsg, $lvl=0) : null;
     
    Rising_Star, Sep 10, 2011 IP