ورود

View Full Version : مبتدی: راهنمایی در مورد کامل کردن کلاس mysqli



majid1605
یک شنبه 03 شهریور 1392, 21:36 عصر
سلام

دوستان لطف می کنند یه نگاهی به کد زیر بندازن ایرادش چیه نمیشه با پایگاه داده ارتباط برقرار کرد.



<?php

require("config.php");
class gdg_DB {

private $DB_HostName ;
private $DB_Name ;
private $DB_UserName ;
private $DB_Pass ;
private $ConnectionResult ;



public function __construct()
{
if($DB_SERVER = null || $DB_USER = null || $DB_DATABASE = null)
die ('Cannot select database');

else
{
$this->DB_HostName = $DB_SERVER;
$this->DB_Name = $DB_DATABASE ;
$this->DB_UserName = $DB_USER ;
$this->DB_Pass = $DB_PASSW ;

$this->Connect();

}



}

private function Connect()
{
$this->ConnectionResult = new mysqli($this->DB_HostName , $this->DB_UserName , $this->DB_Pass , $this->DB_Name);
if(!$this->ConnectionResult)
{
echo"Unable to connect to the database. Error number: ".mysqli_connect_error();


}
else
{
//echo 'Connected Successfully';
// mysqli_select_db($this->ConnectionResult ,"gdg");
return $this->ConnectionResult ;
}

}

/* private function Select_DB()
{
mysqli_select_db($this->ConnectionResult ,$this->DB_Name);
}*/


/* public function __destruct()
{
$this->disconnect();

}*/

public function Select()
{


}

public function Update()
{

}

public function Insert()

{




$sql = "INSERT INTO post (post_id,post_author,post_date,post_edit_date,
post_title,post_content,post_name,post_url,post_ch ange,post_visits,post_attach )
VALUES ( 14, '3', '4', 'H','5',1, '3', '4', 'H','5','88')";

$this->SqlQuery($sql);

// return $result;
}

public function Delete()
{

}

public function Disconnect()
{
mysqli_close($this->ConnectionResult);
$this->ConnectionResult = null;
}

private function SqlQuery($sql)
{
$return_result=$this->ConnectionResult->query($sql);

if ($return_result)
{
return $return_result;
}
else
{
$this->Error($sql);
}
}

private function Error($sql)
{
echo($this->ConnectionResult->error) . '<br>';
die('error: ' . $sql);
}
}
?>


مشکل اینه تابع کانکت به متغیر پسورد ایراد می گیره .
رشته خالی که میزارم به تابع mysqli_select_db ایراد می گیره
ولی مشخصات دیتابیس رو مستقیم تووی تابع کانکت وارد می کنم مشکل حل میشه به شرطی که اسم پایگاه داده رو هم همونجا وارد کنم .
تابع insert رو واسه چک کردن اونجوری نوشتم .

یه سوال دیگه
یکی از دوستان میشه بگید چطور میشه تابع insert رو جوری نوشت که برای همه جداول قابل استفاده باشه

ظاهراً این تابع اینکار رو انجام میده ولی من چیزی متوجه نشدم اگه توضیح بدید ممنون میشم .
کلا اولین برنامه ایی که با php می خوام نویسم .


public function insert_data($table, $insert_values)
{
foreach ($insert_values as $key => $value)
{
$keys[] = $key;
$insertvalues[]='\'' . $value . '\'';
}

$keys =implode(',', $keys);

// Sanitizing the data...
$insertvalues=(implode(',', $insertvalues));

$sql ="INSERT INTO $table ($keys) VALUES ($insertvalues)";

$result=$this->mySql->query($sql);
}

afshin9032
جمعه 08 شهریور 1392, 00:21 صبح
فکر می کنم مشکل شما در تابع construct باشه چون از متغیر های سراسری استفاده کردی در حالی که در اعلا نکردی .
تابع construct زیر رو یک تست بکن :



public function __construct()
{
global $DB_SERVER,$DB_DATABASE,$DB_USER,$DB_PASSW;
if($DB_SERVER = null || $DB_USER = null || $DB_DATABASE = null)
die ('Cannot select database');

else
{
$this->DB_HostName = $DB_SERVER;
$this->DB_Name = $DB_DATABASE ;
$this->DB_UserName = $DB_USER ;
$this->DB_Pass = $DB_PASSW ;

$this->Connect();

}



}

majid1605
یک شنبه 10 شهریور 1392, 09:56 صبح
مشکل هنوز پابرجاست .
و پیغام عدم انتخاب دیتابیس رو میده

farzin764
دوشنبه 01 مهر 1392, 17:24 عصر
خط 9 با خط 24 جور در نمی یاد.

9. private $DB_Pass ;

24. $this->DB_Pass = $DB_PASSW ;
$DB_PASSW این W برای چی هست؟