PHP Classes

File: siteaccess/class.BaseConn.php

Recommend this page to a friend!
  Classes of MarPlo   Web Site Traffic and Pages Access   siteaccess/class.BaseConn.php   Download  
File: siteaccess/class.BaseConn.php
Role: Class source
Content type: text/plain
Description: Connectes to database, and executes SQL queries
Class: Web Site Traffic and Pages Access
Record visits of real users to Web site pages
Author: By
Last change: Deleted properties unused in this class
Date: 11 years ago
Size: 4,811 bytes
 

Contents

Class file image Download
<?php
// class to connect to MySQL and perform SQL queries
// From - http://coursesweb.net/php-mysql/
class BaseConn {
  static protected
$conn = false; // stores the connection to mysql
 
protected $conn_data = array(); // to store data for connecting to database
 
public $affected_rows = 0; // number affected rows for Insert, Update, Delete
 
public $num_rows = 0; // number of rows from Select /Show results
 
public $last_insertid; // stores the last ID in an AUTO_INCREMENT column, after Insert query
 
public $currentpage = array('nrac'=>1, 'dt'=>1); // number of accesses, and last accessed of current accessed page
 
protected $l; // to store the text used in script
 
public $eror = false; // to store and check for errors

 
function __construct($conn_data) {
   
$this->l = $GLOBALS['lang_txt']; // store in property the texts defined in 'lang.php'
   
if(STORE_DATA == 'mysql') $this->conn_data = $conn_data; // stores connection data to MySQL database

    // filter data recived via POST for page access
   
if(isset($_POST['url']) && isset($_POST['title'])) {
     
$protocol = (isset($_SERVER["HTTPS"]) && $_SERVER['HTTPS'] == 'on') ? 'https' : 'http';
     
$_POST['url'] = trim(strip_tags(str_replace($protocol.'://'.$_SERVER['HTTP_HOST'], '', $_POST['url'])));
     
$_POST['title'] = trim(str_replace(array('<', '>', '"', "'"), array('&lt;', '&gt;', '&quot;', '&#039;'), $_POST['title']));

     
// SAVE_WTD = 1 allows to save data
     
if(!defined('SAVE_WTD')) define('SAVE_WTD', (ISAJAX == 1 && (!isset($_SESSION['pgaurl']) || (isset($_POST['url']) && $_POST['url'] != $_SESSION['pgaurl']))) ? 1 : 0);
    }
  }

 
// for connecting to mysql with PDO
 
protected function setConn($conn_data) {
    try {
     
// Connect and create the PDO object
     
self::$conn = new PDO("mysql:host=".$conn_data['host']."; dbname=".$conn_data['bdname'], $conn_data['user'], $conn_data['pass']);

     
// Sets to handle the errors in the ERRMODE_EXCEPTION mode
     
self::$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

     
// Sets transfer with encoding UTF-8
     
self::$conn->exec('SET character_set_client="utf8",character_set_connection="utf8",character_set_results="utf8";');
    }
    catch(
PDOException $e) {
     
$this->eror = $e->getMessage();
    }
  }

 
// Performs SQL queries
  // $sql - SQL query with prepared statement
  // $val - array of insert values
 
public function sqlExecute($sql, $val=array()) {
    if(
self::$conn === false || self::$conn === NULL) $this->setConn($this->conn_data); // sets the connection to mysql
   
$re = true; // the value to be returned

    // if there is a connection set ($conn property not false)
   
if(self::$conn !== false) {
     
// gets the first word in $sql, to determine whenb SELECT query
     
$ar_mode = explode(' ', trim($sql), 2);
     
$mode = strtolower($ar_mode[0]);

     
// performs the query and get returned data
     
try {
       
$sqlre = self::$conn->prepare($sql); // prepares statement
        // execute query
       
if($sqlre && $sqlre->execute($val)) {
         
// if $mode is 'select' or 'show', gets the result_set to return
         
if($mode == 'select' || $mode == 'show') {
           
$re = array();
           
// if fetch() returns at least one row (not false), adds the rows in $re for return
           
if(($row = $sqlre->fetch(PDO::FETCH_ASSOC)) !== false){
              do {
               
// check each column if it has numeric value, to convert it from "string"
               
foreach($row AS $k=>$v) {
                  if(
is_numeric($v)) $row[$k] = $v + 0;
                }
               
$re[] = $row;
              }
              while(
$row = $sqlre->fetch(PDO::FETCH_ASSOC));
            }
           
$this->num_rows = count($re); // number of returned rows
         
}
          else
$this->affected_rows = $sqlre->rowCount(); // affected rows for Insert, Update, Delete

          // if Insert query, stores the last insert ID
         
if($mode == 'insert') $this->last_insertid = self::$conn->lastInsertId();
        }
        else
$this->setSqlError(self::$conn->errorInfo());
      }
      catch(
PDOException $e) {
       
$this->setSqlError(array(0, 1, $e->getMessage()));
      }
    }

   
// sets to return false in case of error
   
if($this->eror !== false) $re = false;
    return
$re;
  }

 
// set sql error 8n $eror
  // $errorInfo - array with error (error message stored in index 2)
 
protected function setSqlError($errorInfo) {
   
$this->eror = '<h4>'. $this->l['err']. $errorInfo[2] .'</h4>';
  }
}