লেখক পরিচিতি
লেখকের নাম:
মর্তুজা আশীষ আহমেদ
মোট লেখা:৭৭
লেখা সম্পর্কিত
মাল্টিপল ডাটাবেজের সাথে পিএইচপি কানেকশন
পাঠশালা বিভাগের গত সংখ্যায় আমরা দেখেছি কিভাবে পিএইচপির সাথে মাইএসকিউএলের ডাটাবেজ কানেকশন নিয়ে কাজ করা যায়। কিন্তু অনেক সময় স্ক্রিপ্টে একই সাথে একাধিক এবং আলাদা আলাদা ডাটাবেজে কাজ করার প্রয়োজন হতে পারে। তাই মাল্টিপল ডাটাবেজের সাথে পিএইচপি কানেকশন কিভাবে করতে হয়, তা জানা জরুরি। এই সংখ্যায় আমরা দেখিয়েছি কিভাবে মাল্টিপল ডাটাবেজের সাথে বিশেষ করে মাইএসকিউএলের সাথে পিএইচপি কানেকশন করা যায়। কানেকশনের সাথে সাথে ওয়েবপেজ থেকে ডাটাবেজ আপডেট করার প্রক্রিয়াও দেখানো হয়েছে এতে।
গত সংখ্যায় যেভাবে পিএইচপির সাথে মাইএসকিউএলের কানেকশন প্রক্রিয়া দেখানো হয়েছিল ঠিক একইভাবে মাল্টিপল ডাটাবেজের সাথে পিএইচপি কানেকশন করতে হয়। তবে এই কাজটি করার জন্য আলাদা আলাদা ভেরিয়েবল ব্যবহার করতে হয়।
মাল্টিপল ডাটাবেজের সাথে পিএইচপি কানেকশন করার প্রক্রিয়া নিচের কোডটি দেখলেই বোঝা যাবে।
$link1 = mysql_connect(‘host1’, ‘me’, ‘sesame’);
mysql_select_db(‘userdb’, $link1);
$query1 = “SELECT ID FROM usertable
WHERE username = ‘$username’”;
$result1 = mysql_query($query1, $link1);
$array1 = mysql_fetch_array($result1);
$usercount = mysql_num_rows($result1);
mysql_close($link1);
$today = ‘2002-05-01’;
$link2 = mysql_connect(‘host2’, ‘myself’, ‘benne’);
mysql_select_db(‘inventorydb’, $link2);
$query2 = “SELECT sku FROM widgets
WHERE ship_date = ‘$today’”;
$result2 = mysql_query($query2, $link2);
$array2 = mysql_fetch_array($result2);
$widgetcount = mysql_num_rows($result2);
mysql_close($link2);
if ($usercount > 0 && $widgetcount > 0) {
$link3 = mysql_connect(‘host3’, ‘I’, ‘seed’);
mysql_select_db(‘salesdb’, $link3);
$query3 = “INSERT INTO saleslog (ID, date, userID, sku)
VALUES (NULL, ‘$today’, ‘$array1[0]’, ‘$array2[0]’)”;
$result3 = mysql_query($query3, $link3);
$insertID = mysql_insert_id($link3);
mysql_close($link3);
if ($insertID >= 1) {
print(“Perfect entry”);
}
else {
print(“Danger, danger, Will Robinson!”);
}
} else {
print(“Not enough information”);
}
?>
এখানে দেখানো ভেরিয়েবল এবং ডাটা টাইপগুলো প্রয়োজনমতো পরিবর্তন করা যাবে। তবে এ ধরনের ডাটাবেজ কানেক্টরে এরর চেকিংয়ের ব্যবস্থা রাখতে হবে। তা না হলে যেকোনো কারণে ডাটাবেজে কানেক্ট করা না গেলে স্ক্রিপ্টে বড় ধরনের সমস্যা দেখা দেবে। এরর চেকিংয়ের জন্য নিচের কোড অনুসরণ করা যেতে পারে :
mysql_query(“SELECT * FROM mutual_funds
WHERE code = ‘$searchstring’”)
or die(“Please check your query and try again.”);
if (!mysql_select_db($bad_db)) {
print(mysql_error());
}
function printError($errorMesg) {
printf(“%s
\n”, $errorMesg);
}
function notify($errorMesg) {
mail(webmaster@site.com, “An Error has occurred at
example.com”, $errorMesg)
}
if ($link = mysql_connect(“host”, “user”, “pass”) {
// Things to do if the connection is successful
} else {
printError(“Sorry for the inconvenience; but we are unable
to process your request at this time. Please check back
later”);
notify(“Problem connecting to database in $SCRIPT_NAME at
line 12 on date(‘Y-m-D’)”);
}
এভাবে মাইএসকিউএল থেকে পিএইচপিতে ডাটাবেজ কানেকশনের পর তা আপনাআপনিই ডাটার সাথে স্ক্রিপ্টের যোগাযোগ স্থাপিত হবে। ডাটাবেজ আপডেট করার ব্যবস্থা রাখার জন্য নিচের কোড ব্যবহার করা যেতে পারে।
পিএইচপি থেকে এভাবে ডাটাবেজ আপডেট করার এরকম একটি উদাহরণ দেখানো হলো :
include(“/usr/local/apache/htdocs/chapl6/dbconnect.php”);
$dbconn = mysql_connect($host,Jusername,$password) or die
(“Cannot connect to database server”);
$db = mysql_select_db(“ecommerce”) or die
(“Could not connect to database\n”);
$result = mysql_query(“INSERT INTO customer VALUES
(‘suehringingermen.com’,’Steve’, ‘Suehring’ ,
‘4 Ma in St.’,’’, ‘54481’, ‘715’ , ‘555-1212’)”) or die
(“Could not execute insert \ n”) ;
?>
শুধু ডাটাবেজের রো আপডেট করার ফাংশন ব্যবহার করে স্ক্রিপ্ট এডিট করার একটি উদাহরণ দেখানো হলো :
include(“/usr/local/apache/htdocs/chapl6/dbconnect.php”);
$dbconn = mysql_connect($host,Jusername,$password) or die
(“Cannot connect to database server”);
$db = mysql_select_db(“ecommerce”) or die
(“Could not connect to database\n”);
$result = mysql_query(“INSERT INTO customer VALUES
( ‘suehringingermen.com’,’Steve’,’Suehring’ ,
‘4 Main St.’,’’,’54481’,’715’,’555-1212’)”) or die
(“Could not execute insert \ n”) ;
# Determine the number of inserted rows. $rows_inserted = mysql_affected_rows($dbconn);
print “Inserted $rows_inserted rows\n”;
?>
এই কোড ব্যবহার করার সময় মনে রাখতে হবে, এখানে অনেক ফিল্ড ডামি হিসেবে ব্যবহার করা হয়েছে কোড লেখার সুবিধার জন্য। সরাসরি ব্যবহার করার সময় সেই সব ডামি পরিবর্তন করে দিতে হবে।
মাল্টিপল ডাটাবেজ কানেকশনের জন্য ব্যবহার হয় এমন কয়েকটি ফাংশন কী কী কাজে লাগে তা দেখা যাক :
mysql_affected_rows([link_id]) রো চেক করার জন্য ব্যবহার হওয়া ফাংশন ।
mysql_change_user(user, password[, Changes MySQL user on an open link.
database][, link_id]) ডাটাবেজের জন্য ইউজার পরিবর্তন করার জন্য ব্যবহার হওয়া ফাংশন।
mysql_close([link_id]) ডাটাবেজ কানেকশন বন্ধ করার জন্য ব্যবহার হওয়া ফাংশন।
mysql_connect([host][:port][:socket] হোস্ট ও পোর্টের লিঙ্ক তৈরি করে।
[, username][, password]) socket; ডাটাবেজ কানেকশন তৈরি করার জন্যই ফাংশনের ব্যবহার দেখানো হয়েছে।
mysql_create_db(db_name[, link_id]) ডাটাবেজ স্ক্রিপ্টে কানেক্ট হওয়া অবস্থায় নতুন ডাটাবেজ তৈরি করার জন্য ব্যবহার হওয়া ফাংশন।
mysql_data_seek(result_id, row_num) ডাটা ফেচ করার জন্য ব্যবহার হওয়া ফাংশন।
mysql_drop_db(db_name[, link_id]) ডাটাবেজ ড্রপ করার জন্য ব্যবহার হওয়া ফাংশন।
mysql_errno([link_id]) এরর রিটার্ন করার জন্য ব্যবহার হওয়া ফাংশন।
mysql_error([link_id]) টেক্সট এরর রিটার্ন করার জন্য ব্যবহার হওয়া ফাংশন।
mysql_fetch_array(result_id[, result_type]) ফেচিং-এ ব্যবহার করা হয় এমন ফাংশন।
mysql_fetch_field(result_id[, field_offset]) ফেচিং-এ ব্যবহার করা হয় এমন ফাংশন।
mysql_fetch_lengths(result_id) ফেচিং-এ ব্যবহার করা হয় এমন ফাংশন।
mysql_fetch_object(result_id[, result_type]) ফেচিং-এ ব্যবহার করা হয় এমন ফাংশন।
mysql_fetch_row(result_id) ফেচিং-এ ব্যবহার করা হয় এমন ফাংশন।
mysql_field_name(result_id, field_index) ইনুমারেশন করা ফিল্ডের জন্য ব্যবহার হওয়া ফাংশন।
mysql_field_seek(result_id, field_offset) ফিল্ড খুঁজে বের করার জন্য ব্যবহার হওয়া ফাংশন।
mysql_field_table(result_id, field_offset) টেবলের নাম রিটার্ন করার জন্য ব্যবহার হওয়া ফাংশন।
mysql_field_type(result_id, field_offset) ফিল্ডের ধরন রিটার্ন করার জন্য ব্যবহার হওয়া ফাংশন।
mysql_field_flags(result_id, field_offset) ফিল্ডের ফ্ল্যাগ রিটার্ন করার জন্য ব্যবহার হওয়া ফাংশন।
mysql_field_len(result_id, field_offset) ফিল্ড লেংথ করার জন্য ব্যবহার হওয়া ফাংশন।
mysql_free_result(result_id) আউটপুট প্রকাশ করার পর মেমরি ফ্রি করার জন্য ব্যবহার হওয়া ফাংশন।
mysql_insert_id([link_id]) অসমাপ্ত ডাটা ইনপুট নির্দেশ করার জন্য ব্যবহার হওয়া ফাংশন।
mysql_select_db(database[, link_id]) কোয়েরির জন্য ব্যবহার করা ফাংশন।
mysql_tablename(result_id, table_id) টেবলনেম রিটার্ন করার জন্য ব্যবহার হওয়া ফাংশন।
ফিডব্যাক : mortuza_ahmad@yahoo.com