title: PHP Strict Standards: Declaration of ezSQL_mysql::escape() should be compatible with ezSQLcore::escape() in /home
body: <p>i have problem about ezSQL_mysql and ezSQLcore, it may be an incompatible version of PHP, I share the code below. what version of Php should I use or what should I do to tailor mysqli? (my php version 5.6 )
  codes :</p>
  
  <p><strong>ezSQL_mysql</strong></p>
  
  <pre><code>&lt;?php
  
  /**********************************************************************
  *  Author: Justin Vincent (jv@jvmultimedia.com)
  *  Web...: http://twitter.com/justinvincent
  *  Name..: ezSQL_mysql
  *  Desc..: mySQL component (part of ezSQL databse abstraction library)
  *
  */
  
  /**********************************************************************
  *  ezSQL error strings - mySQL
  */
  
  $ezsql_mysql_str = array
  (
      1 =&gt; 'Require $dbuser and $dbpassword to connect to a database server',
      2 =&gt; 'Error establishing mySQL database connection. Correct user/password? Correct hostname? Database server running?',
      3 =&gt; 'Require $dbname to select a database',
      4 =&gt; 'mySQL database connection is not active',
      5 =&gt; 'Unexpected error while trying to select database'
  );
  
  /**********************************************************************
  *  ezSQL Database specific class - mySQL
  */
  
  if ( ! function_exists ('mysql_connect') ) die('&lt;b&gt;Fatal Error:&lt;/b&gt; ezSQL_mysql requires mySQL Lib to be compiled and or linked in to the PHP engine');
  if ( ! class_exists ('ezSQLcore') ) die('&lt;b&gt;Fatal Error:&lt;/b&gt; 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-&gt;dbuser = $dbuser;
          $this-&gt;dbpassword = $dbpassword;
          $this-&gt;dbname = $dbname;
          $this-&gt;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-&gt;connect($dbuser, $dbpassword, $dbhost,true) ) ;
          else if ( ! $this-&gt;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-&gt;register_error($ezsql_mysql_str[1].' in '.__FILE__.' on line '.__LINE__);
              $this-&gt;show_errors ? trigger_error($ezsql_mysql_str[1],E_USER_WARNING) : null;
          }
          // Try to establish the server database handle
          else if ( ! $this-&gt;dbh = @mysql_connect($dbhost,$dbuser,$dbpassword,true) )
          {
              $this-&gt;register_error($ezsql_mysql_str[2].' in '.__FILE__.' on line '.__LINE__);
              $this-&gt;show_errors ? trigger_error($ezsql_mysql_str[2],E_USER_WARNING) : null;
          }
          else
          {
              $this-&gt;dbuser = $dbuser;
              $this-&gt;dbpassword = $dbpassword;
              $this-&gt;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-&gt;register_error($ezsql_mysql_str[3].' in '.__FILE__.' on line '.__LINE__);
              $this-&gt;show_errors ? trigger_error($ezsql_mysql_str[3],E_USER_WARNING) : null;
          }
  
          // Must have an active database connection
          else if ( ! $this-&gt;dbh )
          {
              $this-&gt;register_error($ezsql_mysql_str[4].' in '.__FILE__.' on line '.__LINE__);
              $this-&gt;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-&gt;dbh) )
          {
              // Try to get error supplied by mysql if not use our own
              if ( !$str = @mysql_error($this-&gt;dbh))
                    $str = $ezsql_mysql_str[5];
  
              $this-&gt;register_error($str.' in '.__FILE__.' on line '.__LINE__);
              $this-&gt;show_errors ? trigger_error($str,E_USER_WARNING) : null;
          }
          else
          {
              include 'sql_for_tr.php';
              $this-&gt;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(stripslashes($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-&gt;flush();
  
          // For reg expressions
          $query = trim($query);
  
          // Log how the function was called
          $this-&gt;func_call = "\$db-&gt;query(\"$query\")";
  
          // Keep track of the last query for debug..
          $this-&gt;last_query = $query;
  
          // Count how many queries there have been
          $this-&gt;num_queries++;
  
          // Use core file cache function
          if ( $cache = $this-&gt;get_cache($query) )
          {
              return $cache;
          }
  
          // If there is no existing database connection then try to connect
          if ( ! isset($this-&gt;dbh) || ! $this-&gt;dbh )
          {
              $this-&gt;connect($this-&gt;dbuser, $this-&gt;dbpassword, $this-&gt;dbhost);
              $this-&gt;select($this-&gt;dbname);
          }
  
          // Perform the query via std mysql_query function..
          $this-&gt;result = @mysql_query($query,$this-&gt;dbh);
  
          // If there is an error then take note of it..
          if ( $str = @mysql_error($this-&gt;dbh) )
          {
              $is_insert = true;
              $this-&gt;register_error($str);
              $this-&gt;show_errors ? trigger_error($str,E_USER_WARNING) : null;
              return true;
          }
  
          // Query was an insert, delete, update, replace
          $is_insert = false;
          if ( preg_match("/^(insert|delete|update|replace)\s+/i",$query) )
          {
              $this-&gt;rows_affected = @mysql_affected_rows();
  
              // Take note of the insert_id
              if ( preg_match("/^(insert|replace)\s+/i",$query) )
              {
                  $this-&gt;insert_id = @mysql_insert_id($this-&gt;dbh);
              }
  
              // Return number fo rows affected
              $return_val = $this-&gt;rows_affected;
          }
          // Query was a select
          else
          {
  
              // Take note of column info
              $i=0;
              while ($i &lt; @mysql_num_fields($this-&gt;result))
              {
                  $this-&gt;col_info[$i] = @mysql_fetch_field($this-&gt;result);
                  $i++;
              }
  
              // Store Query Results
              $num_rows=0;
              while ( $row = @mysql_fetch_object($this-&gt;result) )
              {
                  // Store relults as an objects within main array
                  $this-&gt;last_result[$num_rows] = $row;
                  $num_rows++;
              }
  
              @mysql_free_result($this-&gt;result);
  
              // Log number of rows the query returned
              $this-&gt;num_rows = $num_rows;
  
              // Return number of rows selected
              $return_val = $this-&gt;num_rows;
          }
  
          // disk caching of queries
          $this-&gt;store_cache($query,$is_insert);
  
          // If debug ALL queries
          $this-&gt;trace || $this-&gt;debug_all ? $this-&gt;debug() : null ;
  
          return $return_val;
  
      }
  
  }
  </code></pre>
  
  <p>?></p>
  
  <p><strong>ezSQLcore</strong></p>
  
  <pre><code>&lt;?php
  
  /**********************************************************************
  *  Author: Justin Vincent (jv@jvmultimedia.com)
  *  Web...: http://twitter.com/justinvincent
  *  Name..: ezSQL
  *  Desc..: ezSQL Core module - database abstraction library to make
  *          it very easy to deal with databases.
  *
  */
  
  /**********************************************************************
  *  ezSQL Constants
  */
  
  define('EZSQL_VERSION','2.03');
  define('OBJECT','OBJECT',true);
  define('ARRAY_A','ARRAY_A',true);
  define('ARRAY_N','ARRAY_N',true);
  define('EZSQL_CORE_ERROR','ezSQLcore can not be used by itself (it is designed for use by database specific modules).');
  
  
  /**********************************************************************
  *  Core class containg common functions to manipulate query result
  *  sets once returned
  */
  
  class ezSQLcore
  {
  
      var $trace            = false;  // same as $debug_all
      var $debug_all        = false;  // same as $trace
      var $debug_called     = false;
      var $vardump_called   = false;
      var $show_errors      = true;
      var $num_queries      = 0;
      var $last_query       = null;
      var $last_error       = null;
      var $col_info         = null;
      var $captured_errors  = array();
      var $cache_dir        = false;
      var $cache_queries    = false;
      var $cache_inserts    = false;
      var $use_disk_cache   = false;
      var $cache_timeout    = 24; // hours
  
      // == TJH == default now needed for echo of debug function
      var $debug_echo_is_on = true;
  
      /**********************************************************************
      *  Constructor
      */
  
      function ezSQLcore()
      {
      }
  
      /**********************************************************************
      *  Connect to DB - over-ridden by specific DB class
      */
  
      function connect()
      {
          die(EZSQL_CORE_ERROR);
      }
  
      /**********************************************************************
      *  Select DB - over-ridden by specific DB class
      */
  
      function select()
      {
          die(EZSQL_CORE_ERROR);
      }
  
      /**********************************************************************
      *  Basic Query  - over-ridden by specific DB class
      */
  
      function query()
      {
          die(EZSQL_CORE_ERROR);
      }
  
      /**********************************************************************
      *  Format a string correctly for safe insert - over-ridden by specific
      *  DB class
      */
  
      function escape()
      {
          die(EZSQL_CORE_ERROR);
      }
  
      /**********************************************************************
      *  Return database specific system date syntax
      *  i.e. Oracle: SYSDATE Mysql: NOW()
      */
  
      function sysdate()
      {
          die(EZSQL_CORE_ERROR);
      }
  
      /**********************************************************************
      *  Print SQL/DB error - over-ridden by specific DB class
      */
  
      function register_error($err_str)
      {
          // Keep track of last error
          $this-&gt;last_error = $err_str;
  
          // Capture all errors to an error array no matter what happens
          $this-&gt;captured_errors[] = array
          (
              'error_str' =&gt; $err_str,
              'query'     =&gt; $this-&gt;last_query
          );
      }
  
      /**********************************************************************
      *  Turn error handling on or off..
      */
  
      function show_errors()
      {
          $this-&gt;show_errors = true;
      }
  
      function hide_errors()
      {
          $this-&gt;show_errors = false;
      }
  
      /**********************************************************************
      *  Kill cached query results
      */
  
      function flush()
      {
          // Get rid of these
          $this-&gt;last_result = null;
          $this-&gt;col_info = null;
          $this-&gt;last_query = null;
          $this-&gt;from_disk_cache = false;
      }
  
      /**********************************************************************
      *  Get one variable from the DB - see docs for more detail
      */
  
      function get_var($query=null,$x=0,$y=0)
      {
  
          // Log how the function was called
          $this-&gt;func_call = "\$db-&gt;get_var(\"$query\",$x,$y)";
  
          // If there is a query then perform it if not then use cached results..
          if ( $query )
          {
              $this-&gt;query($query);
          }
  
          // Extract var out of cached results based x,y vals
          if ( $this-&gt;last_result[$y] )
          {
              $values = array_values(get_object_vars($this-&gt;last_result[$y]));
          }
  
          // If there is a value return it else return null
          return (isset($values[$x]) &amp;&amp; $values[$x]!=='')?$values[$x]:null;
      }
  
      /**********************************************************************
      *  Get one row from the DB - see docs for more detail
      */
  
      function get_row($query=null,$output=OBJECT,$y=0)
      {
  
          // Log how the function was called
          $this-&gt;func_call = "\$db-&gt;get_row(\"$query\",$output,$y)";
  
          // If there is a query then perform it if not then use cached results..
          if ( $query )
          {
              $this-&gt;query($query);
          }
  
          // If the output is an object then return object using the row offset..
          if ( $output == OBJECT )
          {
              return $this-&gt;last_result[$y]?$this-&gt;last_result[$y]:null;
          }
          // If the output is an associative array then return row as such..
          elseif ( $output == ARRAY_A )
          {
              return $this-&gt;last_result[$y]?get_object_vars($this-&gt;last_result[$y]):null;
          }
          // If the output is an numerical array then return row as such..
          elseif ( $output == ARRAY_N )
          {
              return $this-&gt;last_result[$y]?array_values(get_object_vars($this-&gt;last_result[$y])):null;
          }
          // If invalid output type was specified..
          else
          {
              $this-&gt;print_error(" \$db-&gt;get_row(string query, output type, int offset) -- Output type must be one of: OBJECT, ARRAY_A, ARRAY_N");
          }
  
      }
  
      /**********************************************************************
      *  Function to get 1 column from the cached result set based in X index
      *  see docs for usage and info
      */
  
      function get_col($query=null,$x=0)
      {
  
          // If there is a query then perform it if not then use cached results..
          if ( $query )
          {
              $this-&gt;query($query);
          }
  
          // Extract the column values
          for ( $i=0; $i &lt; count($this-&gt;last_result); $i++ )
          {
              $new_array[$i] = $this-&gt;get_var(null,$x,$i);
          }
  
          return $new_array;
      }
  
  
      /**********************************************************************
      *  Return the the query as a result set - see docs for more details
      */
  
      function get_results($query=null, $output = OBJECT)
      {
  
          // Log how the function was called
          $this-&gt;func_call = "\$db-&gt;get_results(\"$query\", $output)";
  
          // If there is a query then perform it if not then use cached results..
          if ( $query )
          {
              $this-&gt;query($query);
          }
  
          // Send back array of objects. Each row is an object
          if ( $output == OBJECT )
          {
              return $this-&gt;last_result;
          }
          elseif ( $output == ARRAY_A || $output == ARRAY_N )
          {
              if ( $this-&gt;last_result )
              {
                  $i=0;
                  foreach( $this-&gt;last_result as $row )
                  {
  
                      $new_array[$i] = get_object_vars($row);
  
                      if ( $output == ARRAY_N )
                      {
                          $new_array[$i] = array_values($new_array[$i]);
                      }
  
                      $i++;
                  }
  
                  return $new_array;
              }
              else
              {
                  return null;
              }
          }
      }
  
  
      /**********************************************************************
      *  Function to get column meta data info pertaining to the last query
      * see docs for more info and usage
      */
  
      function get_col_info($info_type="name",$col_offset=-1)
      {
  
          if ( $this-&gt;col_info )
          {
              if ( $col_offset == -1 )
              {
                  $i=0;
                  foreach($this-&gt;col_info as $col )
                  {
                      $new_array[$i] = $col-&gt;{$info_type};
                      $i++;
                  }
                  return $new_array;
              }
              else
              {
                  return $this-&gt;col_info[$col_offset]-&gt;{$info_type};
              }
  
          }
  
      }
  
      /**********************************************************************
      *  store_cache
      */
  
      function store_cache($query,$is_insert)
      {
  
          // The would be cache file for this query
          $cache_file = $this-&gt;cache_dir.'/'.md5($query);
  
          // disk caching of queries
          if ( $this-&gt;use_disk_cache &amp;&amp; ( $this-&gt;cache_queries &amp;&amp; ! $is_insert ) || ( $this-&gt;cache_inserts &amp;&amp; $is_insert ))
          {
              if ( ! is_dir($this-&gt;cache_dir) )
              {
                  $this-&gt;register_error("Could not open cache dir: $this-&gt;cache_dir");
                  $this-&gt;show_errors ? trigger_error("Could not open cache dir: $this-&gt;cache_dir",E_USER_WARNING) : null;
              }
              else
              {
                  // Cache all result values
                  $result_cache = array
                  (
                      'col_info' =&gt; $this-&gt;col_info,
                      'last_result' =&gt; $this-&gt;last_result,
                      'num_rows' =&gt; $this-&gt;num_rows,
                      'return_value' =&gt; $this-&gt;num_rows,
                  );
                  error_log ( serialize($result_cache), 3, $cache_file);
              }
          }
  
      }
  
      /**********************************************************************
      *  get_cache
      */
  
      function get_cache($query)
      {
  
          // The would be cache file for this query
          $cache_file = $this-&gt;cache_dir.'/'.md5($query);
  
          // Try to get previously cached version
          if ( $this-&gt;use_disk_cache &amp;&amp; file_exists($cache_file) )
          {
              // Only use this cache file if less than 'cache_timeout' (hours)
              if ( (time() - filemtime($cache_file)) &gt; ($this-&gt;cache_timeout*3600) )
              {
                  unlink($cache_file);
              }
              else
              {
                  $result_cache = unserialize(file_get_contents($cache_file));
  
                  $this-&gt;col_info = $result_cache['col_info'];
                  $this-&gt;last_result = $result_cache['last_result'];
                  $this-&gt;num_rows = $result_cache['num_rows'];
  
                  $this-&gt;from_disk_cache = true;
  
                  // If debug ALL queries
                  $this-&gt;trace || $this-&gt;debug_all ? $this-&gt;debug() : null ;
  
                  return $result_cache['return_value'];
              }
          }
  
      }
  
      /**********************************************************************
      *  Dumps the contents of any input variable to screen in a nicely
      *  formatted and easy to understand way - any type: Object, Var or Array
      */
  
      function vardump($mixed='')
      {
  
          // Start outup buffering
          ob_start();
  
          echo "&lt;p&gt;&lt;table&gt;&lt;tr&gt;&lt;td bgcolor=ffffff&gt;&lt;blockquote&gt;&lt;font color=000090&gt;";
          echo "&lt;pre&gt;&lt;font face=arial&gt;";
  
          if ( ! $this-&gt;vardump_called )
          {
              echo "&lt;font color=800080&gt;&lt;b&gt;ezSQL&lt;/b&gt; (v".EZSQL_VERSION.") &lt;b&gt;Variable Dump..&lt;/b&gt;&lt;/font&gt;\n\n";
          }
  
          $var_type = gettype ($mixed);
          print_r(($mixed?$mixed:"&lt;font color=red&gt;No Value / False&lt;/font&gt;"));
          echo "\n\n&lt;b&gt;Type:&lt;/b&gt; " . ucfirst($var_type) . "\n";
          echo "&lt;b&gt;Last Query&lt;/b&gt; [$this-&gt;num_queries]&lt;b&gt;:&lt;/b&gt; ".($this-&gt;last_query?$this-&gt;last_query:"NULL")."\n";
          echo "&lt;b&gt;Last Function Call:&lt;/b&gt; " . ($this-&gt;func_call?$this-&gt;func_call:"None")."\n";
          echo "&lt;b&gt;Last Rows Returned:&lt;/b&gt; ".count($this-&gt;last_result)."\n";
          echo "&lt;/font&gt;&lt;/pre&gt;&lt;/font&gt;&lt;/blockquote&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;".$this-&gt;donation();
          echo "\n&lt;hr size=1 noshade color=dddddd&gt;";
  
          // Stop output buffering and capture debug HTML
          $html = ob_get_contents();
          ob_end_clean();
  
          // Only echo output if it is turned on
          if ( $this-&gt;debug_echo_is_on )
          {
              echo $html;
          }
  
          $this-&gt;vardump_called = true;
  
          return $html;
  
      }
  
      /**********************************************************************
      *  Alias for the above function
      */
  
      function dumpvar($mixed)
      {
          $this-&gt;vardump($mixed);
      }
  
      /**********************************************************************
      *  Displays the last query string that was sent to the database &amp; a
      * table listing results (if there were any).
      * (abstracted into a seperate file to save server overhead).
      */
  
      function debug()
      {
  
          // Start outup buffering
          ob_start();
  
          echo "&lt;blockquote&gt;";
  
          // Only show ezSQL credits once..
          if ( ! $this-&gt;debug_called )
          {
              echo "&lt;font color=800080 face=arial size=2&gt;&lt;b&gt;ezSQL&lt;/b&gt; (v".EZSQL_VERSION.") &lt;b&gt;Debug..&lt;/b&gt;&lt;/font&gt;&lt;p&gt;\n";
          }
  
          if ( $this-&gt;last_error )
          {
              echo "&lt;font face=arial size=2 color=000099&gt;&lt;b&gt;Last Error --&lt;/b&gt; [&lt;font color=000000&gt;&lt;b&gt;$this-&gt;last_error&lt;/b&gt;&lt;/font&gt;]&lt;p&gt;";
          }
  
          if ( $this-&gt;from_disk_cache )
          {
              echo "&lt;font face=arial size=2 color=000099&gt;&lt;b&gt;Results retrieved from disk cache&lt;/b&gt;&lt;/font&gt;&lt;p&gt;";
          }
  
          echo "&lt;font face=arial size=2 color=000099&gt;&lt;b&gt;Query&lt;/b&gt; [$this-&gt;num_queries] &lt;b&gt;--&lt;/b&gt; ";
          echo "[&lt;font color=000000&gt;&lt;b&gt;$this-&gt;last_query&lt;/b&gt;&lt;/font&gt;]&lt;/font&gt;&lt;p&gt;";
  
              echo "&lt;font face=arial size=2 color=000099&gt;&lt;b&gt;Query Result..&lt;/b&gt;&lt;/font&gt;";
              echo "&lt;blockquote&gt;";
  
          if ( $this-&gt;col_info )
          {
  
              // =====================================================
              // Results top rows
  
              echo "&lt;table cellpadding=5 cellspacing=1 bgcolor=555555&gt;";
              echo "&lt;tr bgcolor=eeeeee&gt;&lt;td nowrap valign=bottom&gt;&lt;font color=555599 face=arial size=2&gt;&lt;b&gt;(row)&lt;/b&gt;&lt;/font&gt;&lt;/td&gt;";
  
  
              for ( $i=0; $i &lt; count($this-&gt;col_info); $i++ )
              {
                  echo "&lt;td nowrap align=left valign=top&gt;&lt;font size=1 color=555599 face=arial&gt;{$this-&gt;col_info[$i]-&gt;type} {$this-&gt;col_info[$i]-&gt;max_length}&lt;/font&gt;&lt;br&gt;&lt;span style='font-family: arial; font-size: 10pt; font-weight: bold;'&gt;{$this-&gt;col_info[$i]-&gt;name}&lt;/span&gt;&lt;/td&gt;";
              }
  
              echo "&lt;/tr&gt;";
  
              // ======================================================
              // print main results
  
          if ( $this-&gt;last_result )
          {
  
              $i=0;
              foreach ( $this-&gt;get_results(null,ARRAY_N) as $one_row )
              {
                  $i++;
                  echo "&lt;tr bgcolor=ffffff&gt;&lt;td bgcolor=eeeeee nowrap align=middle&gt;&lt;font size=2 color=555599 face=arial&gt;$i&lt;/font&gt;&lt;/td&gt;";
  
                  foreach ( $one_row as $item )
                  {
                      echo "&lt;td nowrap&gt;&lt;font face=arial size=2&gt;$item&lt;/font&gt;&lt;/td&gt;";
                  }
  
                  echo "&lt;/tr&gt;";
              }
  
          } // if last result
          else
          {
              echo "&lt;tr bgcolor=ffffff&gt;&lt;td colspan=".(count($this-&gt;col_info)+1)."&gt;&lt;font face=arial size=2&gt;No Results&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;";
          }
  
          echo "&lt;/table&gt;";
  
          } // if col_info
          else
          {
              echo "&lt;font face=arial size=2&gt;No Results&lt;/font&gt;";
          }
  
          echo "&lt;/blockquote&gt;&lt;/blockquote&gt;".$this-&gt;donation()."&lt;hr noshade color=dddddd size=1&gt;";
  
          // Stop output buffering and capture debug HTML
          $html = ob_get_contents();
          ob_end_clean();
  
          // Only echo output if it is turned on
          if ( $this-&gt;debug_echo_is_on )
          {
              echo $html;
          }
  
          $this-&gt;debug_called = true;
  
          return $html;
  
      }
  
      /**********************************************************************
      *  Naughty little function to ask for some remuniration!
      */
  
      function donation()
      {
          return "&lt;font size=1 face=arial color=000000&gt;If ezSQL has helped &lt;a href=\"https://www.paypal.com/xclick/business=justin%40justinvincent.com&amp;item_name=ezSQL&amp;no_note=1&amp;tax=0\" style=\"color: 0000CC;\"&gt;make a donation!?&lt;/a&gt; &amp;nbsp;&amp;nbsp;&lt;!--[ go on! you know you want to! ]--&gt;&lt;/font&gt;";
      }
  
  }
  </code></pre>
  
  <h2>?></h2>
  
  <p>i have problem about ezSQL_mysql and ezSQLcore, it may be an incompatible version of PHP, I share the code below. what version of Php should I use or what should I do to tailor mysqli?
  what kind of arrangement should I make? thanks for helping.</p>