ارتباط php و access و مشکل فارسی نویسی در آن

اگر بخواهید در برنامه نویسی PHP از اکسس استفاده کنید، بحث چگونگی اتصال به اکسس یک مسئله است و مشکل فارسی نویسی توی دیتابیس از طریق PHP مسئله ی دیگری است.

در این مقاله نحوه اتصال PHP به اکسس شرح داده شده و سپس راه کار فارسی نویسی در اون توضیح داده شده است.

اگه بخواهید در php از دیتابیس اکسس استفاده کنید، میبایست ابتدادرایور odbc رو فعال کنید. برای اینکار کافیه در فایل php.ini خط زیر رو از حالت کامنت خارج کنید:

<code>extension=php_pdo_odbc.dll</code>

با اینکار امکان استفاده از PDO برای شما فراهم میشه.

حالا از کلاس PDO یک شی میسازیم:

$db = new PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=$dbName; Uid=; Pwd=;");

توجه کنید که معمولا Uid برابر admin است و اگر برای دیتابیس اکسس پسورد نگذاشته اید، نیازی به نوشتن pwd نیست. به عنوان مثال داریم:

$dbh = new PDO("odbc:Driver={Microsoft Access Driver (*.mdb)};Dbq=$dbName;Uid=Admin");

در قسمت $dbName باید مسیر مستقیم فایل اکسس با پسوند mdb رو قرار بدیم.

برای اینکار میتونیم به صورت زیر عمل کنیم :

$dbName = $_SERVER["DOCUMENT_ROOT"] . "products\products.mdb";
if (!file_exists($dbName)) {
    die("Could not find database file.");
}

اکنون اتصال انجام گرفته است. حالا به سراغ کدهای SQL می ریم.

برای مثال دستور select رو به صورت زیر مینویسیم و اجرا میکنیم :

$sql  = "SELECT price FROM product";
$sql .= " WHERE id = " . $productId;
 
$result = $db->query($sql);
$row = $result->fetch();
 
$productPrice = $row["price"];

مشکلی که معمولا کاربران در ارتباط php و اکسس با آن گریبانگیر هستند، مشکل فارسی نویسی در اکسس است. برای اینکه بتونید در دیتابیس اکسس با استفاده از php عبارات فارسی رو بدون مشکل بخونید یا بنویسید، می تونید از کد زیر استفاده کنید:

$dbh = new PDO("odbc:Driver={Microsoft Access Driver (*.mdb)};Dbq=$dbName;charset=Cp1256;Uid=Admin;");
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);   
$name= iconv("UTF-8", 'windows-1256//IGNORE', 'رضا' );
family= iconv("UTF-8", 'windows-1256//IGNORE', 'درودی' );
$count = $dbh->exec("INSERT INTO tblStudent(`f_name`,`l_name`) VALUES ('$name','$family')");  

موفق باشید

نظرات   

 
#1 افشین 1394-10-27 10:55
سلام. با تشکر از مطلب مفیدی که ارائه کردید.
من کد شما رو روی wamp بدون مشکل اجراء میکنم. ولی وقتی برنامه روی سرور اصلی آپلود میشه موقع اجرا با اینکه هیچ خطایی وجود نداره، هیچ دیتایی از فایل access بر نمیگرده. اگر امکان داره راهنمایی بفرمائید.
نقل قول
 

اضافه کردن نظر


کد امنیتی
تغییر کد امنیتی