Re: Newbie is trying to set up OOP With PHP and MySQL or MySQLi database class (using CRUD)
| From: | dealTek | Date: | Sat, 16 Feb 2013 01:15:02 +0000 |
| Subject: | Re: Newbie is trying to set up OOP With PHP and MySQL or MySQLi database class (using CRUD) | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-320227@lists.php.net to get a copy of this message | ||
Thanks for all the help folks,
PHP-light-PDO-Class
ok well I found this...
https://github.com/poplax/PHP-light-PDO-Class
But it does not seem to recognize the port - I put the port as 8889 but keeps saying can't
connect port 3306
Warning: PDO::__construct() [pdo.--construct]: [2002] Connection refused (trying to connect via
tcp://127.0.0.1:3306) in
/Users/revdave/Sites/php-fool/pdo3/PHP-light-PDO-Class-master/class.lpdo.php on line 33
Connection failed: SQLSTATE[HY000] [2002] Connection refused
BTW: I tried to add the port a few places but it didn't work......
How do we fix this?
------ config.php
<?php
$config = array();
$config['Database'] = array();
$config['Database']['dbtype'] = 'mysql';
$config['Database']['dbname'] = 'tester';
$config['Database']['host'] = '127.0.0.1';
$config['Database']['port'] = 8889;
$config['Database']['username'] = 'root';
$config['Database']['password'] = 'root';
$config['Database']['charset'] = 'utf8';
?>
=============== class.lpdo.php
<?php
/**
*
* @Author : Poplax [Email:linjiang9999@gmail.com];
* @Date : Fri Jun 03 10:17:17 2011;
* @Filename class.lpdo.php;
*/
/**
* class lpdo PDO
* one table support only
*/
class lpdo extends PDO
{
public $sql = '';
public $tail = '';
private $charset = 'UTF8';
private $options;
/**
*
* @Function : __construct;
* @Param $ : $options Array DB config ;
* @Return Void ;
*/
public function __construct($options)
{
$this->options = $options;
$dsn = $this->createdsn($options);
$attrs = empty($options['charset']) ? array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET
NAMES " . $this->charset) : array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES "
. $options['charset']);
try
{
parent::__construct($dsn, $options['username'], $options['password'],
$attrs);
}
catch (PDOException $e)
{
echo 'Connection failed: ' . $e->getMessage();
}
}
/**
*
* @Function : createdsn;
* @Param $ : $options Array;
* @Return String ;
*/
private function createdsn($options)
{
return $options['dbtype'] . ':host=' . $options['host'] .
';dbname=' . $options['dbname'];
}
/**
*
* @Function : get_fields;
* @Param $ : $data Array;
* @Return String ;
*/
private function get_fields($data)
{
$fields = array();
if (is_int(key($data)))
{
$fields = implode(',', $data);
}
else if (!empty($data))
{
$fields = implode(',', array_keys($data));
}
else
{
$fields = '*';
}
return $fields;
}
/**
*
* @Function : get_condition;
* @Param $ : $condition Array, $oper String, $logc String;
* @Return String ;
*/
private function get_condition($condition, $oper = '=', $logc = 'AND')
{
$cdts = '';
if (empty($condition))
{
return $cdts = '';
}
else if (is_array($condition))
{
$_cdta = array();
foreach($condition as $k => $v)
{
if (!is_array($v))
{
if (strtolower($oper) == 'like')
{
$v = '\'%' . $v . '%\'';
}
else if (is_string($v))
{
$v = '\'' . $v . '\'';
}
$_cdta[] = ' ' . $k . ' ' . $oper . ' ' . $v . ' ' ;
}
else if (is_array($v))
{
$_cdta[] = $this->split_condition($k, $v);
}
}
$cdts .= implode($logc, $_cdta);
}
return $cdts;
}
/**
*
* @Function : split_condition;
* @Param $ : $field String, $cdt Array;
* @Return String ;
*/
private function split_condition($field, $cdt)
{
$cdts = array();
$oper = empty($cdt[1]) ? '=' : $cdt[1];
$logc = empty($cdt[2]) ? 'AND' : $cdt[2];
if (!is_array($cdt[0]))
{
$cdt[0] = is_string($cdt[0]) ? "'$cdt[0]'" : $cdt[0];
}
else if (is_array($cdt[0]) || strtoupper(trim($cdt[1])) == 'IN')
{
$cdt[0] = '(' . implode(',', $cdt[0]) . ')';
}
$cdta[] = " $field $oper {$cdt[0]} ";
if (!empty($cdt[3]))
{
$cdta[] = $this->get_condition($cdt[3]);
}
$cdts = ' ( ' . implode($logc, $cdta) . ' ) ';
return $cdts;
}
/**
*
* @Function : get_fields_datas;
* @Param $ : $data Array;
* @Return Array ;
*/
private function get_fields_datas($data)
{
$arrf = $arrd = array();
foreach($data as $f => $d)
{
$arrf[] = '
' . $f . '';
$arrd[] = is_string($d) ? '\'' . $d . '\'' : $d;
}
$res = array(implode(',', $arrf), implode(',', $arrd));
return $res;
}
/**
*
* @Function : get_rows;
* @Param $ : $table String, $getRes Boolean, $condition Array, $column Array;
* @Return Array |Object;
*/
public function get_rows($table, $condition = array(), $getRes = false, $column = array())
{
$fields = $this->get_fields($column);
$cdts = $this->get_condition($condition);
$where = empty($condition) ? '' : ' where ' . $cdts;
$this->sql = 'select ' . $fields . ' from ' . $table . $where;
try
{
$this->sql .= $this->tail;
$rs = parent::query($this->sql);
}
catch(PDOException $e)
{
trigger_error("get_rows: ", E_USER_ERROR);
echo $e->getMessage() . "<br/>\n";
}
$rs = $getRes ? $rs : $rs->fetchAll(parent::FETCH_ASSOC);
return $rs;
}
/**
*
* @Function : get_all;
* @Param $ : $table String, $condition Array, $getRes Boolean;
* @Return Array |Object;
*/
public function get_all($table, $getRes = false, $condition = array())
{
return $this->get_rows($table, $condition, $getRes);
}
/**
*
* @Function : get_one;
* @Param $ : $table String, $condition Array, $getRes Boolean, $column Array;
* @Return Array ;
*/
public function get_one($table, $condition = array(), $column = array())
{
$rs = $this->get_rows($table, $condition, true, $column);
$rs = $rs ? $rs->fetch(parent::FETCH_ASSOC) : $rs;
return $rs;
}
/**
*
* @Function : insert;
* @Param $ : $table String, $data Array;
* @Return Int ;
*/
public function insert($table, $data)
{
list($strf, $strd) = $this->get_fields_datas($data);
$this->sql = 'insert into ' . $table . ' (' . $strf .. ')
values (' . $strd . '); ';
return $this->exec($this->sql, __METHOD__);
}
/**
*
* @Function : update;
* @Param $ : $table String, $data Array, $condition Array;
* @Return Int ;
*/
public function update($table, $data, $condition)
{
$cdt = $this->get_condition($condition);
$arrd = array();
foreach($data as $f => $d)
{
$arrd[] = "$f = '$d'";
}
$strd = implode(',', $arrd);
$this->sql = 'update ' . $table . ' set ' . $strd . ' where ' .
$cdt;
return $this->exec($this->sql, __METHOD__);
}
/**
*
* @Function : save;
* @Param $ : $table String, $data Array, $condition Array;
* @Return Int ;
*/
public function save($table, $data, $condition = array())
{
$cdt = $this->get_condition($condition);
list($strf, $strd) = $this->get_fields_datas($data);
$has1 = $this->get_one($table, $condition);
if (!$has1)
{
$enum = $this->insert($table, $data);
}
else
{
$enum = $this->update($table, $data, $condition);
}
return $enum;
}
/**
*
* @Function : delete;
* @Param $ : $table String, $condition Array;
* @Return Int ;
*/
public function delete($table, $condition)
{
$cdt = $this->get_condition($condition);
$this->sql = 'delete from ' . $table . ' where ' . $cdt;
return $this->exec($this->sql, __METHOD__);
}
/**
*
* @Function : exec;
* @Param $ : $sql, $method;
* @Return Int ;
*/
public function exec($sql, $method = '')
{
try
{
$this->sql = $sql . $this->tail;
$efnum = parent::exec($this->sql);
}
catch(PDOException $e)
{
echo 'PDO ' . $method . ' Error: ' . $e->getMessage();
}
return intval($efnum);
}
/**
*
* @Function : setLimit;
* @Param $ : $start, $length;
* @Return ;
*/
public function set_limit($start = 0, $length = 20)
{
$this->tail = ' limit ' . $start . ', ' . $length;
}
}
?>
--
Thanks,
Dave - DealTek
dealtek@gmail.com
[db-3]