PDA

View Full Version : مشکل این کد چیه؟



meysam1366
یک شنبه 11 آبان 1393, 15:52 عصر
سلام دوستان عزیز

ممنون بنده رو راهنمایی بفرمایید

مشکل این کد زیر میشه بفرمایید چیه؟


class DB { private $DbHost;
private $DbUser;
private $DbPass;
private $DbName;

public function __construct($host, $username, $password, $database)
{
$this->DbHost = $host;
$this->DbUser = $username;
$this->DbPass = $password;
$this->DbName = $database;
}

public function Connect()
{
$conn = new mysqli($this->DbHost, $this->DbUser, $this->DbPass, $this->DbName);
if($conn->connect_error) {
echo 'Error in Database';
}else {
echo 'Successfully Connected';
}
}

public function Select($tblName, $conn)
{
//self::Connect();
$sql = "SELECT * FROM $tblName";
$select = $conn->prepare($sql);
$select->fetch();
//return $select;
}

public function Insert($tblName, $conn)
{
//self::Connect();
$email = 'safir.1987@gmail.com';
$password = sha1(md5(md5(ali)));
// prepare sql and bind parameters
$insert = $conn->prepare("INSERT INTO $tblName VALUES(?, ?)");
$insert->bind_param($email, $password);
$insert->execute();
}
}

arash691
یک شنبه 11 آبان 1393, 16:20 عصر
دوست عزیز بیشتر توضیح بدین ... مسابقه ی حدس مشکل از روی کد که نیست :لبخند:

alih110
یک شنبه 11 آبان 1393, 16:49 عصر
public function Insert($tblName, $conn)
{
//self::Connect();
$email = 'safir.1987@gmail.com';
$password = sha1(md5(md5(ali)));
// prepare sql and bind parameters
$insert = $conn->prepare("INSERT INTO $tblName VALUES(?, ?)");
$insert->bind_param($email, $password);
$insert->execute();
}

خط 5 باید اینطوری باشه:

$password = sha1(md5(md5("ali")));

***BiDaK***
یک شنبه 11 آبان 1393, 16:57 عصر
قسمت select اگه میخوای return بدی fetchAll بذار.


return $select->fetchAll;

fetch توو حلقه میاد یا با شرطی که اشاره به یک سطر میکنه.(کوئری)

meysam1366
یک شنبه 11 آبان 1393, 19:10 عصر
دوست عزیز بیشتر توضیح بدین ... مسابقه ی حدس مشکل از روی کد که نیست :لبخند:

سلام دوست عزیز

ممنون شرمنده اصلا حواسم نبود

از prepare ایراد میگیره میگه

Fatal error: Call to undefined method DB::prepare() in

arta.nasiri
یک شنبه 11 آبان 1393, 19:46 عصر
سلام

تو این خط $conn رو به صورت $this->conn وارد کنید ( یادتون نره بالا هم تعریفش کنید )

$conn = new mysqli($this->DbHost, $this->DbUser, $this->DbPass, $this->DbName);

meysam1366
یک شنبه 11 آبان 1393, 19:52 عصر
سلام

تو این خط $conn رو به صورت $this->conn وارد کنید ( یادتون نره بالا هم تعریفش کنید )

$conn = new mysqli($this->DbHost, $this->DbUser, $this->DbPass, $this->DbName);

سلام ممنون دوست عزیز

متوجه منظورتون نشدم خوب من هم همینجوری نوشتم

arta.nasiri
یک شنبه 11 آبان 1393, 19:58 عصر
<?phpclass DB { private $DbHost; private $DbUser; private $DbPass; private $DbName; private $conn; public function __construct($host, $username, $password, $database) { $this->DbHost = $host; $this->DbUser = $username; $this->DbPass = $password; $this->DbName = $database; } public function Connect() { $this->conn = new mysqli($this->DbHost, $this->DbUser, $this->DbPass, $this->DbName); if($this->conn->connect_error) { echo 'Error in Database'; }else { echo 'Successfully Connected'; } } public function Select($tblName) { //self::Connect(); $sql = "SELECT * FROM $tblName"; $select = $this->conn->prepare($sql); $select->fetch(); //return $select; } public function Insert($tblName) { //self::Connect(); $email = 'safir.1987@gmail.com'; $password = sha1(md5(md5(ali))); // prepare sql and bind parameters $insert = $this->conn->prepare("INSERT INTO $tblName VALUES(?, ?)"); $insert->bind_param($email, $password); $insert->execute(); }}

meysam1366
یک شنبه 11 آبان 1393, 20:03 عصر
class DB {
private $DbHost; private $DbUser; private $DbPass; private $DbName; private $conn;
public function __construct($host, $username, $password, $database) { $this->DbHost = $host; $this->DbUser = $username; $this->DbPass = $password; $this->DbName = $database; }
public function Connect() { $this->conn = new mysqli($this->DbHost, $this->DbUser, $this->DbPass, $this->DbName); if ($this->conn->connect_error) { echo 'Error in Database'; } else { echo 'Successfully Connected'; } }
public function Select($tblName) { //self::Connect(); $sql = "SELECT * FROM $tblName"; $select = $this->conn->prepare($sql); $select->fetch(); //return $select; }
public function Insert($tblName) { //self::Connect(); $email = 'safir.1987@gmail.com'; $password = sha1(md5(md5(ali))); // prepare sql and bind parameters $insert = $this->conn->prepare("INSERT INTO $tblName VALUES(?, ?)"); $insert->bind_param($email, $password); $insert->execute(); }
}


ممنون دوست عزیز

ولی این اشتباهه چون از قبل همچین چیزی ما تعریف نکریم پس نیازی به this-> نیست

الان هم تست کردم و ارور زیر رو داد

Notice: Undefined variable: conn in

arta.nasiri
یک شنبه 11 آبان 1393, 20:14 عصر
ممنون دوست عزیز

ولی این اشتباهه چون از قبل همچین چیزی ما تعریف نکریم پس نیازی به this-> نیست

الان هم تست کردم و ارور زیر رو داد

Notice: Undefined variable: conn in

دوست عزیز شما یک connection درست میکنید و مقدار دهی میکنید تو $conn که این متغییر رو بصورت محلی تعریف کرده اید! و حتی return هم نمیکنید.

بنده هم عرض کردم $conn رو جز property ها تعریف کنید سپس به این شکل استفاده کنید $this->conn.

Notice: Undefined variable: conn in
در مورد این هم مسلمه ارور میده وقتی تعریفش نکردید

***BiDaK***
یک شنبه 11 آبان 1393, 22:19 عصر
یک فیلد پرایویت $conn تعریف کن.

public function Connect()
{
if(self::$conn == null)
{
$config = Loader::load('Configs');
self::$conn = new mysqli($config->dbHost, $config->dbUser, $config->dbPass, $config->dbName);
if(self::$conn->connect_errno)
{
echo 'The MySQL server is currently offline.';
Debug('Connection error.');
}
self::$conn->query('SET NAMES \'utf8\'');
self::$conn->set_charset('utf8');
}
}

متد connect هم باید فراخوانی بشه تا اجرا کنه.
در ادامشم با conn$ دستوراتو مینویسی.

meysam1366
دوشنبه 12 آبان 1393, 00:01 صبح
سلام

در حال حاضر با هیچکدوم مشکلی نداره فقط به prepare گیر میده