[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: PDO Запрос возвращает пустоту
DarkGuy
Добрый день!
Разбираюсь с PDO
Запрос не возвращает данные.
Хотя данные в таблице есть.
	public function select($table, $fields='*', $where=null, $order=null , $limit=null, $rsql=false) {
if($table == null) $table = "*";
if($fields == null) $fields = "*";
if($order != null) $order = "ORDER BY ".$order."";
if($limit != null) $limit = "LIMIT ".$limit."";
if($where != null){
$where = self::where($where);
$where_sql ='WHERE '.$where['sql'];
$where_execute =$where['execute'];
}else{
$where_sql = null;
$where_execute = null;
}
$sql ="SELECT $fields from ".PREF."$table $where_sql $order $limit";
if($rsql == true){
return Array('sql'=>$sql,'where_execute'=>$where_execute);
}
$query = $this->_connect->prepare($sql);
if($where != null){
foreach ($where_execute as $key => $value){
$query->bindValue($key, $value);
}
$query->execute($where_execute);
}
if ($query->fetchColumn() > 0) {
return $query->fetch(PDO::FETCH_ASSOC);
}else{
return false;
}
}



$a = Database::get()->select('table1','*', $where); 

вернул пустоту

а
$a = Database::get()->select('table1','*', $where, null,null,true); 


возвращает


       Array (
[sql] => SELECT * from table1 WHERE name= :name
[where_execute] => Array
(
[:name] => '4aaf58ca29c0f42fb'
)

)


Полный Код
Свернутый текст


class Database
{
protected $_connect = null;
protected $error = null;
private static $_instance = null;

final private function __wakeup(){}
final private function __clone() {}

public static function get(){
if(!extension_loaded('pdo')){
throw new Exception('PDO не работает');
die();
}else{
if ( self::$_instance[ANCHOR] == null )
self::$_instance[ANCHOR] = new self();
}
return self::$_instance[ANCHOR];
}

private function __construct(){
try{
$params = array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
);
if (DB_DRIVER == 'mysql') {
$params[PDO::MYSQL_ATTR_INIT_COMMAND] = "SET NAMES '".CHARACTER."'";
}
$params[PDO::ATTR_PERSISTENT] = true;
$this->_connect = new PDO(DB_DRIVER.':host='.DB_HOST.';dbname='.DB_NAME.';charset='.CHARACTER, DB_USER, DB_PASS, $params);
$this->_connect->exec('SET NAMES '.CHARACTER );
$this->_connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
$this->_connect->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
$this->_connect->query( 'SET character_set_connection = '.CHARACTER.';' );
$this->_connect->query( 'SET character_set_client = ' . CHARACTER . ';' );
$this->_connect->query( 'SET character_set_results = ' . CHARACTER . ';' );
$this->_connect->query('SET NAMES '.CHARACTER);
}catch (PDOException $e){
throw new Exception('Mysql error'.$e->getMessage());
die();
}
return $this->_connect;
}

public function prepare($sql, $values){
$sth = $this->db->prepare($sql);
$sth->execute($values);
}

private static function where($where_array){
/*
$where_array=Array('id'=>Array(
'comparison'=>'=',
'value'=>'1'
),
'condition'=>Array('0'=>'')
);

$where_array['id']['comparison']='=';
$where_array['id']['value']='1';
$where_array['condition'][]='';

$where_array=Array(
'id'=>Array(
'comparison'=>'=',
'value'=>'1'
),
'name'=>Array(
'comparison'=>'=',
'value'=>'Roman'
),
'famaly'=>Array(
'comparison'=>'=',
'value'=>'Gaevoy'
),
'condition'=>Array(
'0'=>' AND',
'1'=>' AND',
'2'=>''
)
);
$where_array['id']['comparison']='=';
$where_array['id']['value']='1';
$where_array['condition'][]='AND';
$where_array['name']['comparison']='=';
$where_array['name']['value']='Roman';
$where_array['condition'][]='AND';
$where_array['famaly']['comparison']='=';
$where_array['famaly']['value']='Gaevoy;
$where_array['condition'][]='';
*/

if(is_array($where_array)){
$i=0;
$where = Array('sql' => null, 'condition' => null);
foreach ($where_array as $key => $value){
if($key !='condition'){
$where['sql'] = $where['sql'].''.$key.''.$value['comparison'].' :'.$key.''.$where['condition'][$i++];
$where['execute'][':'.$key] = self::get()->quote($value['value']);
}
}
}
else{
$where['sql'] = $where_array;
}
return $where;
}

public function quote($quote){
$quote = $this->_connect->quote($quote);
return $quote;
}

public function select($table, $fields='*', $where=null, $order=null , $limit=null, $rsql=false) {
if($table == null) $table = "*";
if($fields == null) $fields = "*";
if($order != null) $order = "ORDER BY ".$order."";
if($limit != null) $limit = "LIMIT ".$limit."";
if($where != null){
$where = self::where($where);
$where_sql ='WHERE '.$where['sql'];
$where_execute =$where['execute'];
}else{
$where_sql = null;
$where_execute = null;
}
$sql ="SELECT $fields from ".PREF."$table $where_sql $order $limit";
if($rsql == true){
return Array('sql'=>$sql,'where_execute'=>$where_execute);
}
$query = $this->_connect->prepare($sql);
if($where != null){
foreach ($where_execute as $key => $value){
$query->bindValue($key, $value);
}
$query->execute($where_execute);
}
if ($query->fetchColumn() > 0) {
return $query->fetch(PDO::FETCH_ASSOC);
}else{
return false;
}
}


public function selectall($table, $fields='*', $where=null, $order=null , $limit=null, $rsql=false) {
if($table == null) $table = "*";
if($fields == null) $fields = "*";
if($order != null) $order = "ORDER BY ".$order."";
if($limit != null) $limit = "LIMIT ".$limit."";
if($where != null){
$where = self::where($where);
$where_sql ='WHERE '.$where['sql'];
$where_execute =$where['execute'];
}else{
$where_sql = null;
$where_execute = null;
}
$sql="SELECT $fields from ".PREF."$table $where_sql $order $limit";
if($rsql == true){
return Array('sql'=>$sql,'where_execute'=>$where_execute);
}
$query = $this->_connect->prepare($sql);
if($where != null){
foreach ($where_execute as $key => $value){
$query->bindValue($key, $value);
}
$query->execute($where_execute);
}
$query->execute($where_execute);
if ($query->fetchColumn() > 0) {
return $query->fetchAll(PDO::FETCH_ASSOC);
}else{
return false;
}
}


public function insert($table, $values, $rsql=false) {
foreach ($values as $key => $value){
if($key == 'changed'){
$valuesq[$key] ="NOW()";
}else{
$valuesq[$key] =self::quote ($value);
}
}

$sql = "INSERT INTO ".PREF."$table (".(implode(",",array_keys($valuesq))).")VALUES('".(implode("','",$valuesq))."')";
if($rsql == true){
return $sql;
}
$query = $this->_connect->prepare($sql);
foreach ($valuesq as $key => $value){
$query->bindValue(':' . $key, $value);
}
$query->execute($valuesq);

return $query->rowCount();
}

public function update($table, $values, $where= null, $rsql=false) {
foreach ($values as $key => $value){
if($key == 'changed'){
$preupdate[] = $key." = NOW()";
}else{
$preupdate[] = $key." = '".self::quote($value)."'";
}
}

$update = implode("','",$preupdate);
$where = self::where($where);
$sql ="UPDATE ".PREF."$table SET ".$update." ".$where['sql']."";
if($rsql == true){
return $sql;
}
$query = $this->_connect->prepare($sql);

foreach ($where['execute'] as $key => $value){
$query->bindValue($key, $value);
}
foreach ($values as $key => $value){
$query->bindValue(':' . $key, $value);
}

$query->execute($values);

return $query->rowCount();
}

public function delete($table, $where, $rsql=false) {
$where = self::where($where);
$sql = "DELETE FROM ".PREF."$table ".$where['sql']."";
if($rsql == true){
return $sql;
}
$query = $this->_connect->prepare($sql);
foreach ($where['execute'] as $key => $value){
$query->bindValue($key, $value);
}
$query->execute($where['execute']);

return $query->rowCount();
}

}




Где я ошибся?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.