نمایش نتایج 1 تا 4 از 4

نام تاپیک: جمع بندی موضوعات و مباحث مربوط به PHP و MSSQL

  1. #1
    کاربر دائمی آواتار Unique
    تاریخ عضویت
    مرداد 1384
    محل زندگی
    ایران - اصفهان
    پست
    3,199

    جمع بندی موضوعات و مباحث مربوط به PHP و MSSQL

    علت اینکه این پست آموزشی را میزنم به این دلیل هست که مدتیه همینطور سوالاتی در مورد اتصال به MSSQL Server توی انجمن php پرسیده میشه و خودم و دوستان یا جواب نمیدیم یا به همه میگیم برین جستجو کنید توی انجمن و گوگل حتما پیدا میکنید.

    به هر حال پیرو یکی از پست های اخیر خواستم تجربیاتم را در اختیار دوستان بگذارم.

    نکته : به نظر من و خیلی از برنامه نویسان php استفاده از MSSQL خط قرمز محسوب میشه و کلا باید ازش در محیط لینوکس و php دوری کرد ، لازم هم نیست به من اعتماد کنید و خودتون میتونید توی انجمن های معتبر PHP بپرسید و جستجو کنید.

    به طور کلی چندین روش برای اتصال به MSSQL وجود داره که من 5 روش معمول را میگم و یکی را که توصیه میکنم توضیحات و کدش را میگذارم.

    روش اول : تا نسخه 5.3 خود php یک Extension به نام mssql داشت که هنوز مستنداتش هم توی سایت php.net موجوده ولی دیگه پشتیبانی نمیشه ، حالا اگه خیلی علاقه دارین میتونید از نسخه های قدیمی تر php استفاده کنید و از این extension استفاده کنید. البته قرار نیست مثلا همه امکانات SQL 2012 را هم پشتیبانی کنه و ممکنه خیلی bug داشته باشه. مستنداتش هم اینجاست

    روش دوم : مایکروسافت مثل اینکه خودش متوجه شده اگه دست به کار نشه توی php واقعا کسی با مشکلات driver های فعلی سراغ mssql نمیره و خلاصه آستین ها را بالا زدند یا سفارشش را دادند. خودش اومده یک extension برای php درست کرده که به نسخه 3 هم رسیده و اینطور که پیداست خیلی امکانات خوبی داره و mssql را به خوبی پشتیبانی میکنه. مشکلش اینه که فقط روی windows قابل استفاده هست و برای لینوکس تا زمان نوشتن این پست وجود نداره. این سایتش و همه اطلاعات مربوطه برای علاقه مندان.

    توجه : سه روش بعدی در مورد PDO هست.

    روش سوم : یکی از Driver های PDO اسمش PDO_DBLIB هست که امکان اتصال و استفاده از MSSQL و Sybase را از طریق کتابخونه FreeTDS فراهم میکنه. این Extension از نسخه 5.3 PHP به بعد برای ویتدوز پشتیبانی نمیشه (وجود نداره) و وفقط روی لینوکس قابل استفاده هستش. نکنه اینکه DB-LIB قدیمیه ، Thread un-safe هست و هزار مشکل دیگه که در زمان کار کردن بهش بر میخورین.

    روش چهارم : یکی دیگه از driver های PDO اسمش PDO_SQLSRV هستش که شما باید همون extension که توی روش دوم اشاره کردم را بگیرید و با توجه به non thread safe یا thread safe بودن نسخه php با کپی کردن dll های مربوطه و اعمال تغییرات توی php.ini اون را نصب کنید. نکته اینکه فقط روی ویندوز هم جواب میده. اینجا طریقه نصب را بهتر توضیح داده

    روش پنجم : این روش که هم روی ویندوز و هم روی لینوکس جواب میده (بدیهی هست که باید ODBC روی سیستم عامل نصب باشه به همراه Extension مربوطه) از طریق PDO_ODBC هستش.

    بهتره از Driver های جدید مایکروسافت استفاده کنید که خیلی قابلیت داره و برای هر دو سیستم عامل هم طراحی شده از اینجا نسخه ویندوزی را بگیرین و از اینجا نسخه لینوکسی را.

    اما کد :

      try{
    $hostname = "host,port";
    $dbname = "database_name";
    $username = "username";
    $pw = "password";

    $pdo = new PDO ("odbc:Driver={SQL Server};Server=$hostname;Database=$dbname; Uid=$username;Pwd=$pw;");

    } catch (PDOException $e) {
    echo "Failed : " . $e->getMessage() . "\n";
    exit;
    }

    $query = $pdo->prepare("select field_name from table");
    $query->execute();

    for($i=0; $row = $query->fetch(); $i++){
    echo ($i + 1)." - ".$row['field_name']."<br/>";
    }


    نکته مهم : یکی از مشکلات اصلی دوستان درست set نکردن host$ هستش. متوجه باشین دادن ip یا ادرس FQDN (مثل mssql.mydomain.com) ممکنه خطای timeout بده اونجاست که شما باید به دو نکته توجه کنید.پورت پیش فرض 1443 هست اما اگه شما چند تا instance داشته باشین اونوقت پورت ها به صورت رندوم اختصاص داده میشه و باید توی host$ از instance name استفاده کنید یا پورت بدین ، اینطوری :


    $hostname = "xxx.xxx.xxx.xxx,6688"; // port version
    $hostname = "xxx.xxx.xxx.xxx\SQLEXPRESS"; // instance version

    پس حتما از مسئول هاست بپرسین تنظیماتشون چیه و اگه خودتون نصب میکنید از instance name استفاده کنید. (توی SQL server Configuration Manager هست)

    امیدوارم مفید باشه.
    پیروز باشید.

  2. #2

    نقل قول: جمع بندی موضوعات و مباحث مربوط به PHP و MSSQL

    سلام متون فارسي در اجراي كوري ها خالي برميگرده چطور اين مشكل رو حل كنم من از PDO استفاده ميكنم

  3. #3
    کاربر دائمی آواتار Unique
    تاریخ عضویت
    مرداد 1384
    محل زندگی
    ایران - اصفهان
    پست
    3,199

    نقل قول: جمع بندی موضوعات و مباحث مربوط به PHP و MSSQL

    بیشتر توضیح بدین ، متوجه نشدم.

  4. #4

    نقل قول: جمع بندی موضوعات و مباحث مربوط به PHP و MSSQL

    احتمال زیاد به خاطر اینه که لغات موجود در دیتابیس با لغاتی که در کوئری هستند از نظر شما مثل هم هست ولی از نظر کامپیوتر و utf-8 خیر... مثلا حروف ی با ي فرق داره و یا ک فارسی با ک عربی. در این مورد موقع query زدن باید چند حالت بوجود اومده رو درنظر بگیرید.

تاپیک های مشابه

  1. پاسخ: 4
    آخرین پست: سه شنبه 06 دی 1390, 22:20 عصر
  2. حرفه ای: جمع بندی موضوعات مرتبط با VoIP
    نوشته شده توسط Saeed_m_Farid در بخش گفتگو با مسئولین سایت، درخواست و پیشنهاد
    پاسخ: 1
    آخرین پست: یک شنبه 10 آبان 1388, 23:30 عصر
  3. جمع آوری و دسته بندی موضوعات مطرح شده
    نوشته شده توسط mn_nahvi در بخش گفتگو با مسئولین سایت، درخواست و پیشنهاد
    پاسخ: 0
    آخرین پست: شنبه 14 مهر 1386, 14:50 عصر
  4. منو بندی موضوعات انجمن ها
    نوشته شده توسط sql_qassem در بخش گفتگو با مسئولین سایت، درخواست و پیشنهاد
    پاسخ: 0
    آخرین پست: شنبه 20 دی 1382, 17:40 عصر
  5. پاسخ: 6
    آخرین پست: پنج شنبه 06 آذر 1382, 00:08 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •