সময়ে সময়ে আমি ডাটাবেসে সংযোগ সম্পর্কিত প্রশ্নগুলি দেখতে পাচ্ছি।
বেশিরভাগ উত্তরগুলি আমি যেভাবে করি তা নয় বা আমি উত্তরগুলি সঠিকভাবে নাও পেতে পারি। যাইহোক; আমি কখনই এ নিয়ে ভাবিনি কারণ আমি যেভাবে এটি করি তা আমার পক্ষে কার্যকর।
তবে এখানে একটি ক্রেজি চিন্তাভাবনা; হয়তো আমি এই সব ভুল করছি, এবং যদি এটি হয়; আমি কীভাবে পিএইচপি এবং পিডিও ব্যবহার করে কোনও মাইএসকিউএল ডাটাবেসে সঠিকভাবে সংযোগ স্থাপন করব এবং এটি সহজেই অ্যাক্সেসযোগ্য করব তা জানতে চাই।
আমি এখানে এটি কীভাবে করছি:
প্রথমে, এখানে আমার ফাইলের কাঠামো (নিচে নামিয়ে দেওয়া) :
public_html/
* index.php
* initialize/
-- load.initialize.php
-- configure.php
-- sessions.php
index.php
একেবারে শীর্ষে, আমার আছে require('initialize/load.initialize.php');
।
load.initialize.php
# site configurations
require('configure.php');
# connect to database
require('root/somewhere/connect.php'); // this file is placed outside of public_html for better security.
# include classes
foreach (glob('assets/classes/*.class.php') as $class_filename){
include($class_filename);
}
# include functions
foreach (glob('assets/functions/*.func.php') as $func_filename){
include($func_filename);
}
# handle sessions
require('sessions.php');
আমি জানি ক্লাস অন্তর্ভুক্ত করার আরও ভাল, বা আরও সঠিক উপায়, তবে এটি কী ছিল তা মনে করতে পারছি না। এখনও এটি দেখার জন্য সময় পান নি, তবে আমি মনে করি এটি কিছু ছিল autoload
। এরকম কিছু...
configure.php
এখানে আমি মূলত কিছু php.ini -poperties ওভাররাইড করি এবং সাইটের জন্য কিছু অন্যান্য বৈশ্বিক কনফিগারেশন করি
কানেক্ট.এফপি
আমি সংযোগটি একটি ক্লাসে রেখেছি যাতে অন্যান্য ক্লাসগুলি এটির প্রসারিত করতে পারে ...
class connect_pdo
{
protected $dbh;
public function __construct()
{
try {
$db_host = ' '; // hostname
$db_name = ' '; // databasename
$db_user = ' '; // username
$user_pw = ' '; // password
$con = new PDO('mysql:host='.$db_host.'; dbname='.$db_name, $db_user, $user_pw);
$con->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$con->exec("SET CHARACTER SET utf8"); // return all sql requests as UTF-8
}
catch (PDOException $err) {
echo "harmless error message if the connection fails";
$err->getMessage() . "<br/>";
file_put_contents('PDOErrors.txt',$err, FILE_APPEND); // write some details to an error-log outside public_html
die(); // terminate connection
}
}
public function dbh()
{
return $this->dbh;
}
}
# put database handler into a var for easier access
$con = new connect_pdo();
$con = $con->dbh();
//
আমি এখানে বিশ্বাস করি যে আমি সম্প্রতি ওওপি শিখতে এবং মাইএসকিএলের পরিবর্তে পিডিও ব্যবহার শুরু করার পরে ব্যাপক উন্নতির সুযোগ রয়েছে।
সুতরাং আমি মাত্র কয়েকজন প্রাথমিকের টিউটোরিয়াল অনুসরণ করেছি এবং বিভিন্ন স্টাফ চেষ্টা করেছি ...
sessions.php
নিয়মিত সেশন হ্যান্ডলিং পাশে আমিও এই মত একটি অধিবেশন মধ্যে কিছু শ্রেণীর আরম্ভ:
if (!isset($_SESSION['sqlQuery'])){
session_start();
$_SESSION['sqlQuery'] = new sqlQuery();
}
এই ক্লাসটি পুরো জায়গা জুড়ে পাওয়া যায়। এটি ভাল অনুশীলন (?) হতে পারে না ...
যাইহোক, এই পদ্ধতিটি আমাকে সর্বত্র থেকে করার অনুমতি দেয়:
echo $_SESSION['sqlQuery']->getAreaName('county',9); // outputs: Aust-Agder (the county name with that id in the database)
আমার sqlQuery
- শ্রেণীর ভিতরে , যা extends
আমার connect_pdo
- শ্রেণিতে রয়েছে , আমার একটি সার্বজনীন ফাংশন রয়েছে getAreaName
যা আমার ডাটাবেসে অনুরোধটি পরিচালনা করে।
আমি খুব সুন্দর ঝরঝরে মনে করি।
একটি মোহন মত কাজ করে
তাই মূলত আমি এটি কিভাবে করছি।
এছাড়াও, যখনই আমার ক্লাসের মধ্যে না থেকে আমার ডিবি থেকে কিছু আনার দরকার হয়, আমি ঠিক এর মতো কিছু করি:
$id = 123;
$sql = 'SELECT whatever FROM MyTable WHERE id = :id';
$qry = $con->prepare($sql);
$qry -> bindParam(':id', $id, PDO::PARAM_INT);
$qry -> execute();
$get = $qry->fetch(PDO::FETCH_ASSOC);
যেহেতু আমি সংযোগ_পড.এফপি এর ভিতরে একটি পরিবর্তনশীল মধ্যে সংযোগ স্থাপন করেছি , আমি কেবল এটি উল্লেখ করেছি এবং আমি যেতে ভাল। এটা কাজ করে। আমি আমার প্রত্যাশিত ফলাফল পেয়েছি ...
তবে তা নির্বিশেষে; আমি যদি এখানে আসি তবে আপনি যদি আমাকে বলতে পারেন তবে আমি সত্যিই প্রশংসা করব। পরিবর্তে আমার কী করা উচিত, যে ক্ষেত্রগুলি আমি উন্নতির জন্য বদলাতে পারলাম ইত্যাদি ...
আমি শিখতে আগ্রহী ...