Sina
5 سال پیش توسط Sina مطرح شد
7 پاسخ

ساخت متد برای اتصال به دیتابیس

سلام
وقت بخیر
من یه تابع دارم برای اتصال به دیتابیس به شکا زیر :

function connectToDB() {
    try {
        return new PDO("mysql:host=localhost;dbname=my_db","root","");
    } catch (PDOException $e) {
        die($e->getMessage());
    }
}

حالا تو صفحات مختلف چجوری میتونم ازش استفاده کنم ؟
مثلا اینجا :

<?php  
 //fetch.php  
 $connect = mysqli_connect("localhost", "root", "", "my_db");  
 if(isset($_POST["employee_id"]))  
 {  
      $query = "SELECT * FROM persons WHERE id = '".$_POST["employee_id"]."'";  
      $result = mysqli_query($connect, $query);  
      $row = mysqli_fetch_array($result);  
      echo json_encode($row);  
 }  
 ?>

ثبت پرسش جدید
Sina
@sinayas1 5 سال پیش مطرح شد
0

دوستان همچنان منتظر کمک شما هستم
با تشکر


Alimotreb
تخصص : کانفیگ سرور و برنامه نویس
@Alimotreb 5 سال پیش مطرح شد
1

سلام
@sinayas1

اگر از روش PDO استفاده میکنید باید به این شکل باشه
فانکشن اتصال :

function connectToDB() {
    try {
        return new PDO("mysql:host=localhost;dbname=test","","");
    } catch (PDOException $e) {
        die($e->getMessage());
    }
}

بعد برای کوئری زدن و ...
یه مثال :

 $connect = connectToDB();
    $stat = $connect ->prepare("SELECT * FROM users WHERE username = :username");
    $stat->bindParam("username" , $username );
    $stat->execute();

    $user = $statment->fetch(PDO::FETCH_OBJ);

به این شکل باید استفاده کنید

روش بالایی که شما زدید اتصال به روش mysqli هست


Sina
@sinayas1 5 سال پیش آپدیت شد
0

@Alimotreb
ممنون از پاسخ شما اما من با توجه به صحبت شما کدم رو به شکل زیر تغییر دادم ولی متاسفانه رکوردی بر نمیگردونه :

 <?php
 require_once "functions.php";
  $connect = connectToDB();
   if(isset($_POST["employee_id"]))  
 {  
    $stat = $connect ->prepare("SELECT * FROM persons WHERE id = '".$_POST["employee_id"]."'");
    $stat->bindParam("employee_id" , $employee_id );
    $stat->execute();
    $user = $statment->fetch(PDO::FETCH_OBJ);
    echo json_encode($row);
    }

کد قبلی که دارم استفاده میکنم و مشکلی نداره

<?php  
 //fetch.php  
 $connect = mysqli_connect("localhost", "oot", "", "");  
 if(isset($_POST["employee_id"]))  
 {  
      $query = "SELECT * FROM persons WHERE id = '".$_POST["employee_id"]."'";  
      $result = mysqli_query($connect, $query);  
      $row = mysqli_fetch_array($result);  
      echo json_encode($row);  
 }  
 ?>

Sina
@sinayas1 5 سال پیش مطرح شد
0

مورد اول با تغییر کد به شکل زیر برطرف شد :

 //fetch.php  
require_once "functions.php";
  $connect = connectToDB();
   if(isset($_POST["employee_id"]))  
 {  
    $statment = $connect ->prepare("SELECT * FROM persons WHERE id = '".$_POST["employee_id"]."'");
    $statment->bindParam("employee_id" , $employee_id);
    $statment->execute();
    $row = $statment->fetch();
    echo json_encode($row);
    }

فقط اگه بفرمایید کد زیر رو چجوری میتونم ویرایش کنم ممنون میشم :

<?php  
 $connect = mysqli_connect("localhost", "", "", "");  
 if(!empty($_POST))  
 {  
      $output = '';  
      $message = '';  
      $NationalCode = mysqli_real_escape_string($connect, $_POST["NationalCode"]);  
      $firstname = mysqli_real_escape_string($connect, $_POST["firstname"]);  

      if($_POST["employee_id"] != '')  
      {  
           $query = "  
           UPDATE persons   
           SET    
           NationalCode='$NationalCode',   
           firstname='$firstname'    
           WHERE id='".$_POST["employee_id"]."'";  
           $message = 'Update completed successfully';  
      }  
      else  
      {  
           $query = "  
           INSERT INTO persons(
           NationalCode , 
           firstname
           )  
           VALUES(
           '$PersonnelCode', 
           '$NationalCode', 
           '$firstname' 

           );  
           ";  
           $message = 'Data Inserted';  
      }  
      if(mysqli_query($connect, $query))  
      {  
           $output .= '<div class="alert alert-success" role="alert"><label class="text-muted"> '. $message . ' </label></div>';  

      }  
      echo $output;  
 }  
 ?>

Alimotreb
تخصص : کانفیگ سرور و برنامه نویس
@Alimotreb 5 سال پیش مطرح شد
1

سلام
@sinayas1

ببینید برای اتصال و کار با پایگاه داده 2 روش هست
یکی روش
mysqli که شما دارید استفاده میکنید و مشکلی نداره
روش دوم هم روش PDO هست
که وقتی از مراحل prepare و bindParam استفاده میکنید داده هارو خودش اوکی میکنه
کدتون رو باید اینطوری بنویسید

require_once "functions.php";
  $connect = connectToDB();
   if(isset($_POST["employee_id"]))  
 {  
    $statment = $connect ->prepare("SELECT * FROM persons WHERE id = :userid");
    $statment->bindParam("userid" , $_POST["employee_id"]);
    $statment->execute();
    $row = $statment->fetch();
    echo json_encode($row);
    }

این روش PDO هست

روش mysqli هم روش زیر هست که دارید استفاده میکنید


<?php  
 //fetch.php  
 $connect = mysqli_connect("localhost", "oot", "", "");  
 if(isset($_POST["employee_id"]))  
 {  
      $query = "SELECT * FROM persons WHERE id = '".$_POST["employee_id"]."'";  
      $result = mysqli_query($connect, $query);  
      $row = mysqli_fetch_array($result);  
      echo json_encode($row);  
 }  
 ?>

Sina
@sinayas1 5 سال پیش مطرح شد
0

سیلام ممنون از لطفتون
@Alimotreb
فقط میشه بکید این تیکه کد رو چجوری ویرایش کنم ؟به روش PDO ?

<?php  
 $connect = mysqli_connect("localhost", "", "", "");  
 if(!empty($_POST))  
 {  
      $output = '';  
      $message = '';  
      $NationalCode = mysqli_real_escape_string($connect, $_POST["NationalCode"]);  
      $firstname = mysqli_real_escape_string($connect, $_POST["firstname"]);  

      if($_POST["employee_id"] != '')  
      {  
           $query = "  
           UPDATE persons   
           SET    
           NationalCode='$NationalCode',   
           firstname='$firstname'    
           WHERE id='".$_POST["employee_id"]."'";  
           $message = 'Update completed successfully';  
      }  
      else  
      {  
           $query = "  
           INSERT INTO persons(
           NationalCode , 
           firstname
           )  
           VALUES(
           '$PersonnelCode', 
           '$NationalCode', 
           '$firstname' 

           );  
           ";  
           $message = 'Data Inserted';  
      }  
      if(mysqli_query($connect, $query))  
      {  
           $output .= '<div class="alert alert-success" role="alert"><label class="text-muted"> '. $message . ' </label></div>';  

      }  
      echo $output;  
 }  
 ?>

Alimotreb
تخصص : کانفیگ سرور و برنامه نویس
@Alimotreb 5 سال پیش آپدیت شد
0

سلام
@sinayas1

ببینید کوئریتون به این شکل میشه

$query = "UPDATE persons SET NationalCode=:NationalCode,firstname=:firstname WHERE id=:employee_id";  

مطابق نمونه ای هایی که تو پاسخ های قبلی بهتون دادم ، هر کدوم از متغیر هارو bindparam کنید و کوئریتون رو اجرا کنید

تو پاسخ های قبلی مثال هارو بخونید طبق همونا انجام بدید ،مشکلتون حل میشه


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام