PDA

View Full Version : مشکل در خواندن اطلاعات access با odbc



majid4
دوشنبه 09 تیر 1393, 19:02 عصر
سلام

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

مشکلی که من دارم اینه که نمی تونم اطلاعات فارسی رو بخونم یعنی به صورت علامت سوال نشون داده می شه

دیتابیس رو چک کردم درسته


ممنون می شم اگه کمکم کنید

majid4
سه شنبه 10 تیر 1393, 13:22 عصر
مشکل خواندن تقریبا حل شد

و همچنین همین مشکل تویه insert کردن دارم

کسی نیست کمک کنه ؟

مهرداد سیف زاده
شنبه 14 تیر 1393, 15:17 عصر
حالم از access به هم میخوره یعنی از یکی از مخربترین فناوریهای اشتباه میکروب سافته. یه sqlite به هزارتای access‌می ارزه

برای خلاصی از این مشکل در انتهای هر کوئری باید ; بزنی و دستور زیر رو وارد کنی تا این access‌نفهم بفهمه که شما داری بر اساس utf-8 داده ردو بدل میکنی


CharacterSet=65001;

بعدشم حرف شما خیلی زشته که کسی جواب نداده اومدید میگید مشکل پوله
نه تنها این فناوری مایکروسافت مسخره هست بلکه کلا مفهوم بیشتر استانداردهای برنامه نویسی رو زیر سوال برده
من ۳ روز پیاپی فقط دنبال پیدا کردن یک event ساده برای رد و بدل داده بین dll و برنامه اصلی بودم و هیچ کدوم از برنامه نویسان #c بلد نبودن جواب بدن آخرش خودم انقد داکیومنت خوندم و کد نوشتم تا تونستم راه حلشو پیدا کنم
http://barnamenevis.org/showthread.php?454943-%D8%AF%D8%B1%DB%8C%D8%A7%D9%81%D8%AA-%D8%AF%D8%A7%D8%AF%D9%87-%D9%87%D8%A7-%D8%A7%D8%B2-%D9%BE%D8%B1%D9%88%D8%AA%DA%A9%D9%84-UDP-%D8%AA%D9%88%D8%B3%D8%B7-DLL-%D9%88-%D8%A7%D8%B1%D8%B3%D8%A7%D9%84-%D8%A2%D9%86-%D8%A8%D9%87-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87

majid4
شنبه 14 تیر 1393, 20:27 عصر
مهرداد جان ممنون و معذرت می خوام واسه اون پست

لطفا یه query ساده واسم بنویس


باز هم ممنون

مهرداد سیف زاده
یک شنبه 15 تیر 1393, 07:36 صبح
این خودش query هست دیگه
مثلا برای خواندن تمام اطلاعات از جدول content و انتهاش این query رو بنویس

select * from content;CharacterSet=65001;

majid4
یک شنبه 15 تیر 1393, 10:50 صبح
error mide

Warning: odbc_exec() [function.odbc-exec]: SQL error: [Microsoft][ODBC Microsoft Access Driver] Characters found after end of SQL statement., SQL state 37000 in SQLExecDirect in C:\wamp\www\exam\index.php on line 16


Warning: odbc_fetch_object() expects parameter 1 to be resource, boolean given in C:\wamp\www\exam\index.php on line 17


سورس کامل :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<?php
$mdbFilename = "C:\wamp\www\exam\db.mdb";
$username = '';
$password = '';
$con = odbc_connect("Driver={Microsoft Access Driver
(*.mdb)};Dbq=$mdbFilename",$username,$password);
$sql="select * from users;CharacterSet=65001;";
$rs=odbc_exec($con,$sql);
while ($rows = odbc_fetch_object($rs)) {
echo $rows->name;
echo " | ";
echo $rows->family;
echo " | ";
echo $rows->job;
echo " | ";
echo "<br/>";
}
?>
</body>
</html>

مهرداد سیف زاده
یک شنبه 15 تیر 1393, 11:18 صبح
برای استفاده از odbc و ارتباط با access از راهنمای زیر استفاده کنید
http://stackoverflow.com/a/12996977

majid4
یک شنبه 15 تیر 1393, 12:47 عصر
odbc می گه من این دستورات رو نمی تونم اجرا کنم


odbc_exec($objConnect, "SET NAMES 'UTF8'");
odbc_exec($objConnect, "SET client_encoding='UTF-8'");

فقط دستورات اصلی مثل select , update , insert , ...

مهرداد سیف زاده
یک شنبه 15 تیر 1393, 13:24 عصر
بجاش CharacterSet=65001; قرار بده. من یه بار همچین مشکلی پیش اومد کل وب رو زیر روی کردم تا این یه تیکه دستور رو پیدا کردم

odbc_exec($objConnect, "CharacterSet=65001;");

majid4
یک شنبه 15 تیر 1393, 17:07 عصر
مهرداد جان قرار دادم ارور اولی رو می ده


Warning: odbc_exec() [function.odbc-exec]: SQL error: [Microsoft][ODBC Microsoft Access Driver] Invalid SQL statement; expected 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT', or 'UPDATE'., SQL state 37000 in SQLExecDirect

مهرداد سیف زاده
دوشنبه 16 تیر 1393, 07:55 صبح
عجیبه؟
من قبلا این مشکل رو داشتم و از همین طریق حل شد حتی دوباره برای کار شما نزدیک به یک ساعت دست به کد شدم ولی تمام اینرنتو زیر رو کردم و هر روشی گفتن روش اجرا کردم تمام حروف فارسی رو ؟ نشون میده
تمام روشهای که زیر گفته بودن اجرا کردم ولی حل نشد
http://stackoverflow.com/questions/9135499/cannot-display-greek-characters-mdb-file-php-odbc
http://jainishsenjaliya.wordpress.com/2012/12/20/how-to-read-greek-characters-mdb-file-using-php-php-odbc-utf8-char/
http://stackoverflow.com/questions/17063599/how-to-show-mdbaccess-file-fieldsinclude-utf8arabic-persian-charactrers-wi
http://stackoverflow.com/questions/13790669/how-do-i-change-the-connection-character-set-when-using-odbc-to-connect-to-ms-ac


<?php header('Content-Type:text/html; charset=UTF-8'); ?><?php$dbh = new PDO("odbc:Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\\MDB\\test.mdb;CharacterSet=utf-8;"); $sql = "SELECT * FROM user;";foreach ($dbh->query($sql) as $row){ echo mb_convert_encoding($row['description'], "UTF-8");}?>
دیگه شرمنده تا جایی که دانشم میرسید تلاشمو کردم و از این به بعد دوستان دیگه باید راهنمایی کنن

majid4
دوشنبه 16 تیر 1393, 11:07 صبح
مهرداد جان خیلی خیلی ممنون بابت وقتی که واسه ی من گذاشتی

منم نمی دونم مشکل چیه همه ی راه حل های http://stackoverflow.com (http://stackoverflow.com/questions/9135499/cannot-display-greek-characters-mdb-file-php-odbc) رو تست کردم ولی نتیجه ای نداد

باز هم ممنون