|
|
|
| Я вообще то новичок. Пытаюсь разобраться с классами, но не все понятно, может вы подскажете. С помощью класса формирую запрос к БД.
class Mysql_db
{
var $_fields;
var $expr;
var $sql;
var $result=array();
function __construct($params) {
if(is_array($params['fields'])) $this->_fields=join(",",$params['fields']);
else $this->_fields=$params['fields'];
if(isset($params['condit'])) $this->expr=" where ".$params['condit'];
if(isset($params['order'])) $this->expr.=" order by ";
if(is_array($params['order'])) $this->expr.=join(",",$params['order']);
else $this->expr.=$params['order'];
if(isset($params['group'])) $this->expr.=" group by ".$params['group'];
if(isset($params['limit'])) $this->expr.=" limit ".join(",",$params['limit']);
//формирование запроса
$this->sql="select ".$this->_fields." from ".$params['table'].$this->expr;
return mysql_select_db(MYSQLDBASE,(mysql_connect(MYSQLHOST,MYSQLUSER,MYSQLPASSWORD)));
}
function query(){
mysql_query ('SET NAMES cp1251'); //даем знать что бд на русском
$res=mysql_query($this->sql);
if(strstr($this->sql,"select")){
switch(1){
case strstr($sql,"count"):
return mysql_result($res,0);
break;
default:
while($_res=mysql_fetch_object($res))
{ $result[ ]=$_res;}
return $result;
}}}}
Потом делаю запрос на подсчет строк, а он возврвщает массив а не число
$params=array("fields"=>"count(*)","table"=>"fotogallery","group"=>"title");
$cnt=new Mysql_db($params);
$ll=$cnt->query(); | |
|
|
|
|
|
|
|
для: Le-mers
(04.09.2006 в 11:41)
| | Да, всё правильно, вы формируете массив
<?php
while($_res=mysql_fetch_object($res))
{ $result[ ]=$_res;}
return $result;
?>
|
и возвращаете его, для того, чтобы узнать количество элементов в массиве следует использовать функцию count().
<?php
while($_res=mysql_fetch_object($res))
{ $result[ ]=$_res;}
return count($result);
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(04.09.2006 в 12:45)
| | Еще вопрос. Насколько я понимая функция mysql_fetch_object() возвращает массив об'ектов. Как мне получить определенный об'ект? (в простом массиве это выглядело так: $tit=$title[$sw_field]['title'];) | |
|
|
|
|
|
|
|
для: Le-mers
(04.09.2006 в 13:08)
| | $tit=$title[$sw_field]->title; | |
|
|
|
|
|
|
|
для: Le-mers
(04.09.2006 в 13:08)
| | Элемент массива является объектом, далее вы с ним можете поступать как с обычны объектом. | |
|
|
|
|
|
|
|
для: Le-mers
(04.09.2006 в 11:41)
| | Вот этот кусок
function query(){
mysql_query ('SET NAMES cp1251'); //даем знать что бд на русском
$res=mysql_query($this->sql);
if(strstr($this->sql,"select")){
switch(1){
case strstr($sql,"count"):
return mysql_result($res,0);
break;
default:
while($_res=mysql_fetch_object($res))
{ $result[ ]=$_res;}
return $result;
}}}}
|
попробуйте переписать так:
function query()
{
mysql_query ('SET NAMES cp1251'); //даем знать что бд на русском
$res=mysql_query($this->sql);
if(stripos($this->sql,"select ") === 0)
{
if(stripos($this->sql,"select count(") === 0)
return mysql_result($res,0);
while($_res=mysql_fetch_object($res))
$result[ ]=$_res;
return $result;
}
}
|
Между прочим. SET NAMES имеет смысл делать один раз. После mysql_connect | |
|
|
|