সর্বশেষ সম্পাদনা করেছেন জেলাল (০২-০৬-২০১৩ ০০:৩৯)

টপিকঃ mysqli এক্সটেনশন সম্পর্কিত আলোচনা

পিএইচপির ভবিষ্যত ভার্শনগুলো থেকে নাকি নরমাল MySQL এক্সটেনশনের ফাংশনগুলো বাদ দিয়ে দেবে। ভার্শন ৫.৫.০-তে অলরেডী এগুলোকে deprecated রাখা হয়েছে।

ফোরামের পিএইচপি প্রোগ্রামারদের মধ্যে কে কে ইতোমধ্যেই MySQLi কিংবা PDO_MySQL এক্সটেনশন ব্যবহার করছেন? আজকে প্রথমবারের মত MySQLi টুকটাক গুতাইলাম। আপাতত MySQLi এর অবজেক্ট ওরিয়েন্টেড স্টাইলের কথা না বলে প্রসিডিউরাল স্টাইলের কথা হোক।

MySQL মেথড:

<?php
$conn = mysql_connect("localhost","test","123456") or die();
mysql_select_db("testdb");
$result = mysql_query("SELECT * FROM `users` ORDER BY `id`");
for($i=0; $i < mysql_num_rows($result); $i++)
{
    echo mysql_result($result, $i, "name") . "<br />";
}

/*কিংবা
while($row = mysql_fetch_array($result))
{
    echo $row["name"] . "<br />";
}*/
?>


MySQLi মেথড:

<?php
$conn = mysqli_connect("localhost","test","123456") or die();
mysqli_select_db($conn, "testdb");
$result = mysqli_query($conn, "SELECT * FROM `users` ORDER BY `id`");
for($i=0; $i < mysqli_num_rows($result); $i++)
{
    $row = mysqli_fetch_array($result);
    echo $row["name"] . "<br />";
}

/*কিংবা
while($row = mysqli_fetch_array($result))
{
    echo $row["name"] . "<br />";
}*/
?>

নবিশ হিসেবে আপাতত কয়েকটি প্রশ্ন রাখছি এক্সপার্টদের কাছে। blushing

প্রশ্ন-১: ডাটাবেইসের users টেবিল থেকে ইউজারনেইমগুলো পাওয়ার জন্য উপরের MySQLi মেথড ঠিক আছে কিনা বা আরো কোন ক্লীন কিংবা সংক্ষিপ্ত মেথড আছে কি?

প্রশ্ন-২: কিছূক্ষেত্রে MySQLi একটু ঝামেলাপূর্ণ নয় কি? যেমন: mysql_select_db ফাংশনে কানেকশন আইডেন্টিফায়ার অপশনাল, কিন্তু mysqli_select_db ফাংশনে কানেকশন আইডেন্টিফায়ার বাধ্যতামূলক। mysqli_query-তেও কানেকশন আইডেন্টিফায়ার বাধ্যতামূলক।

আবার, mysql_select_db ফাংশনে আগে ডাটাবেইসের নাম ও অপশনাল কানেকশন আইডেন্টিফায়ার শেষে দেয়া হয় (রিকোয়ার্ড প্যারামিটার প্রিসিডেন্স পাবে এটাই স্বাভাবিক), কিন্তু mysqli_select_db ফাংশনে কানেকশন আইডেন্টিফায়ার প্রথমে ও  ডাটাবেইসের নাম পরে দিতে হয়। এখানে, যেহেতু দুটো প্যারামিটারই বাধ্যতামূলক এবং দুটি এক্সটেনশনই (mysql ও mysqli) একই ভেন্ডর ডিজাইন করেছে সেহেতু mysqli-এ প্যারামিটারদ্বয়ের ক্রম mysql-এর সাথে সামঞ্জস্য রেখে করা উচিত ছিল নয় কি?

প্যারামিটারের ক্রমের এই ব্যাপারটি mysql_query ভার্সাস mysqli_query-এর ক্ষেত্রেও প্রযোজ্য।

প্রশ্ন-৩: mysql-এ আমি যদি শুধু ৫ নং ইউজারের নাম পেতে চাই:

$user_fifth = mysql_result ($result, 4, "name");

এর mysqli ইকুইভ্যালেন্ট:

mysqli_data_seek($result, 4);
$row = mysqli_fetch_array($result);
$user_fifth = $row["name"];

এক লাইনের জায়গায় তিন লাইন লাগছে। নাকি আরো শর্টকাট রাস্তা আছে?

Re: mysqli এক্সটেনশন সম্পর্কিত আলোচনা

এখনও এটা ইউজ করি নাই। PDO অনেক দিন আগেই ইউজ করেছিলাম। এখন কোনটাই ইউজ করা হয় না। কোন ফ্রেমওয়ার্ক ইউজ করলে তার লাইব্রেরী, না করলে রেডবিন টাইপের কিছু ইউজ করে কাজ চালিয়ে নেই।
তবে বহু বছর raw SQL লিখে কোড করেছি।

Feed থেকে ফোরাম সিগনেচার, imgsign.com
ব্লগ: shiplu.mokadd.im
মুখে তুলে কেউ খাইয়ে দেবে না। নিজের হাতেই সেটা করতে হবে।

শিপলু'এর ওয়েবসাইট

লেখাটি GPL v3 এর অধীনে প্রকাশিত

সর্বশেষ সম্পাদনা করেছেন sohel6bd (১৩-০৬-২০১৩ ০১:১৪)

Re: mysqli এক্সটেনশন সম্পর্কিত আলোচনা

আমি MySqli অবজেক্ট ওরিয়েন্টেড মেথড ব্যবহার করি।

<?php

$dbConn = new MySQLi($hostname, $username, $password, $database);
if ($dbConn->connect_errno) {die("Failed to connect to MySQL database");}


$query = "SELECT name FROM table_name LIMIT 1";
$result = $dbConn->query($query) or die($dbConn->error.__LINE__);
$field = $result->fetch_assoc();
$name = $field['name'];

echo $name;

?>

Sohel Rana
Web Designer & Developer

Re: mysqli এক্সটেনশন সম্পর্কিত আলোচনা

দেখা যাচ্ছে অতি সত্তর PDO তে সুইচ করতে হবে।

এই ব্যাক্তির সকল লেখা কাল্পনিক , জীবিত অথবা মৃত কারো সাথে মিল পাওয়া গেলে তা সম্পুর্ন কাকতালীয়, যদি লেখা জীবিত অথবা মৃত কারো সাথে মিলে যায় তার দায় এই আইডির মালিক কোনক্রমেই বহন করবেন না। এই ব্যক্তির সকল লেখা পাগলের প্রলাপের ন্যায় এই লেখা কোন প্রকার মতপ্রকাশ অথবা রেফারেন্স হিসাবে ব্যবহার করা যাবে না।

Re: mysqli এক্সটেনশন সম্পর্কিত আলোচনা

সাইফুল_বিডি লিখেছেন:

দেখা যাচ্ছে অতি সত্তর PDO তে সুইচ করতে হবে।

অথবা ফ্রেমওয়ার্ক ব্যবহার শুরু করেন। এত কিছু নিয়ে মাথা ঘামাতে হবেনা। dancing

Re: mysqli এক্সটেনশন সম্পর্কিত আলোচনা

শেখার সময় থেকেই MySQLi ইউজার। tongue

Re: mysqli এক্সটেনশন সম্পর্কিত আলোচনা

এটা আমি ব্যবহার করতে পারিনা ।