PDA

View Full Version : سوال: ساختن تابع fetch در کلاس من



amin7x
یک شنبه 01 اردیبهشت 1392, 20:37 عصر
سلام دوستان

میخواستم بدونم چه طوری میتونم یک fetch برای کلاسم بسازم؟



<?php
class dataBase{

const HOST = "localhost";
const USERNAME = "root";
const PASSWORD = "";
const DATABASE = "";

private $ConnectionVar;
private $Data = array();

public function __construct(){

$this->ConnectionVar = mysql_connect(self::HOST,self::USERNAME,self::PASS WORD);
$this->Data['SelectDB'] = mysql_select_db(self::DATABASE,$this->ConnectionVar);

mysql_query("SET NAMES 'utf8'",$this->ConnectionVar);
mysql_query("SET CHARACTER SET utf8", $this->ConnectionVar);
mysql_query("SET CHARACTER_SET_CONNECTION=utf8", $this->ConnectionVar);

if(!$this->ConnectionVar){
trigger_error('DB Connect Error (' . mysql_errno() . ') ' . mysql_error());
exit ('Sorry! We were unable to connect to the database. Please try again.');}
if(!$this->Data['SelectDB']){
trigger_error('DB Select Error (' . mysql_errno() . ') ' . mysql_error());
exit('Sorry! Database could not selected.');}
}

public function Close() {
return mysql_close($this->ConnectionVar);
}

public function MysqlQuery($Sql) {
mysql_query($Sql,$this->ConnectionVar);
}

public function Fetch(){


}

public function __destruct(){
$this->Close();
$this->data = array();
$this->ConnectionVar = null;
}
}

?>


ممنون

engmmrj
یک شنبه 01 اردیبهشت 1392, 21:45 عصر
public function Fetch($fetch){
return mysql_fetch_assoc($fetch);

}

amin7x
دوشنبه 02 اردیبهشت 1392, 13:29 عصر
یه اروری داد.


Call to a member function Fetch() on a non-object

واسه فراخوانیش این کارو کردم :



<?php
require_once('dataBase.class.php');

$objDB = new dataBase();
$objDB->MysqlQuery("SELECT * FROM `food`")->Fetch();

echo $fetch['namefood'];
?>

MRmoon
دوشنبه 02 اردیبهشت 1392, 13:43 عصر
البته اگه مثلا بخوای fetch های بیشتری مثل object یا array رو return کنی با این روش میتونی استفاده کنی:


/*
* function to return mysql fetch types
* @param query void $query
* @param string $fetch_type
* return void
*/
function Fetch($query,$fetch_type = 'assoc')
{
// import type of mysql fetchs to array Fetchs
$Fetchs = array("assoc","array","object","row","field","lengths");
$true = FALSE;
foreach( $Fetchs as $key => $val )
{
if($val == $fetch_type)
{
$true = TRUE;
break;
}
}
$fetch = "mysql_fetch_" . $fetch_type;
return $fetch($query);
}

استفاده :


//usage
require_once('dataBase.class.php');

$objDB = new dataBase();
$query = $objDB->MysqlQuery("SELECT * FROM `food`");
$fetch =$objDB->Fetch($query,"array");
echo $fetch['namefood'];

فقط باید تابع MysqlQuery اینجوری تغییر بدی
public function MysqlQuery($Sql) {
$query = mysql_query($Sql,$this->ConnectionVar);
return $query;
}

engmmrj
دوشنبه 02 اردیبهشت 1392, 14:22 عصر
برای فراخوانیش باید به سبک زیر عمل کنید :

$objDB = new dataBase();
$query=$objDB->MysqlQuery("SELECT * FROM `food`");
$fetch= $objDB->Fetch($query);
echo $fetch['namefood'];