الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشكلة اشارات الاستفهام في الاتصال odbc وقاعدة بيانات SQL Server

بدأه mhamad_wanly في 24 أكتوبر 2013 · 10 رد · 671 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

أرجو منكم المساعدة في الموضوع التالي

 

لدي قاعدة بيانات SQL Server  يتم الاتصال مع  PHP  عن طريق الكود التالي :

 

$dsn = "Driver={SQL Native Client};Server=$MyServer;Database=$MyDB; Uid=$MyUser;Pwd=$MyPass;";
 
$dsn = "Driver={SQL Server};Server=$MyServer;Database=$MyDB;"; // for dev. purposes
 
 
$conn = odbc_connect($dsn, $MyUser, $MyPass);
 
لكن عند الاستعلام عن البيانات وعرضها بالمتصفح تظهر اشارات استفهام !!
مين عندو فكرة عن كيفية معالجة هذا الأمر ؟؟
 
أو حدا عندو فكرة عن كود odbc SQL Server  المقابل للكود المستخدم مع قاعدة البيانات  mysql وهو :
$sql_char= 'utf-8'; 
odbc_exec($conn,'SET character_set_client=$sql_char'); 
odbc_exec($conn,"SET character_set_connection=$sql_char"); 
odbc_exec($conn,"SET character_set_database=$sql_char"); 
odbc_exec($conn,"SET character_set_results=$sql_char"); 
odbc_exec($conn,"SET character_set_server=$sql_char");  
 
ماهو الكود المقابل له مع قاعدة بيانات SQL Server  والاتصال هو : odbc_connect ??
 
ولكم جزيل الشكر 
 
 
#2

عفوا الكود

المستخدم مع قاعدة البيانات mysql هو :
$sql_char= 'utf-8'; 
mysql_query($conn,'SET character_set_client=$sql_char'); 
mysql_query($conn,"SET character_set_connection=$sql_char"); 
omysql_query($conn,"SET character_set_database=$sql_char"); 
mysql_query($conn,"SET character_set_results=$sql_char"); 
mysql_query($conn,"SET character_set_server=$sql_char");
#3

ماحدا بيعرف ؟؟؟

#4

السلام عليكم

 

في الغالب المشكلة خاصة بالترميز تأكد من توافق ترميز قاعدة البيانات مع ترميز الملفات مع ترميز الأكواد .

لاتحسبن العلم ينفع وحده مالم يتوج ربه بخلاق

لا إله إلا أنت سبحانك إني كنت من الظالمين

#5

ممكن التفصيل أكتر أخي الكريم ؟؟

كيف بعمل ترميز قاعدة البيانات وترميز الاتصال والأكواد بهذا النوع من الاتصال ؟؟

#6

السلام عليكم

 

يمكنك ضبط ترميز قاعدة البيانات من مدير قواعد البيانات phpMyAdmin .

 

لضبط ترميز البيانات المدخلة والمستلمة من القاعدة يرجى تنفيذ الإستعلام التالي قبل أي عملية إستعلام على قاعدة البيانات كالتالي :

$sql_char= 'utf-8';
mysql_query($conn,'SET character_set_client=$sql_char');

أو

$sql_char= 'utf-8';mysql_query($conn,'SET NAMES $sql_char');

- ولكن من الواضح أن المشكلة معك في العرض إذاً يجب عليك التحقق من أن ترميز الملفات التي تستخدمها هي utf-8 إذا كنت تستخدم محرر الـ notepad++ فيمكنك تحويل الترميز من خلال Encoding >>Convert to UTF-8 .

- وأن يكون ترميز الأكواد أيضاً هو utf-8 على سبيل المثال ملفات HTML يتم ضبط الترميز من خلال الوسم meta في رأس الصفحة كالتالي :

<meta charset="utf-8">

- طبعاً هذا الكود لوثيقة HTML5 والتي تكون على النحو التالي :

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
</head>
<body>
</body>
</html>

لاتحسبن العلم ينفع وحده مالم يتوج ربه بخلاق

لا إله إلا أنت سبحانك إني كنت من الظالمين

#7

أخي الكريم أنت انتبهت للسؤال ؟؟؟؟؟؟؟

قاعدة البيانات هي sql server  وليس mysql 

والاتصال عن طريق : odbc_connect

#8

عذراً لم أنتبه للمشاركة جيداً , يفضل إستخدام وسم الكود <> لتكون المشاركة مقروءة بشكل جيد .

 

الكود الخاص لفعل هذا في قواعد بيانات SQL Server هو :

ini_set('mssql.charset', 'UTF-8');

- بالإضافة لمراعات ما تم ذكره في المشاركة السابقة .

تم تعديل هذه المشاركة بواسطة ahmedsaoud31 في 26 أكتوبر 2013 في 11:12

لاتحسبن العلم ينفع وحده مالم يتوج ربه بخلاق

لا إله إلا أنت سبحانك إني كنت من الظالمين

#9

أخي الكريم .. مشكور على الرد 

لكن الاتصال عندي عن طريق odbc_connect  وليس mssql_connect

الاتصال mssql لم يعمل معي

لذلك أريد كيفية تحديد الترميز بهذا النوع من الاتصال (odbc)

 

ولك جزيل الشكر

#10

جرب هذا :

odbc_exec($conn, "SET NAMES utf8");

لاتحسبن العلم ينفع وحده مالم يتوج ربه بخلاق

لا إله إلا أنت سبحانك إني كنت من الظالمين

#11
ahmedsaoud31 كتب:

 

جرب هذا :

odbc_exec($conn, "SET NAMES utf8");

جربتا مسبقا ولم تنجح .. عم يعطي هي الرسالة :

 

Warning: odbc_exec() [function.odbc-exec]: SQL error: [Microsoft][ODBC SQL Server Driver][sql Server]'NAMES' is not a recognized SET option., SQL state 37000 in SQLExecDirect inC:\AppServ\www\esest07\config.php on line 26

 

:((

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…