Javad Dashti Motlagh
Javad Dashti Motlagh
خواندن ۲ دقیقه·۶ سال پیش

اتصال به SQL Server با php و سایر دردسرها

خب چقدر این لعنتی ارور و گیر میداد تا راه افتاد

اول از همه اینکه بصورت پیشرفض sqlsrv_connect قابل شناخته شدن نیست و باید extension اون رو نصب و بهش شناسایی کنید

برای اتصال اینجا سه روش رو توضیح داده که چطوری میشه (در ادامه ممکنه با هیچکدوم نتونید به دیتابیس وصل شید که روشش رو آینده بهتون میگم)

https://www.php.net/manual/en/function.sqlsrv-connect.php

https://docs.microsoft.com/en-us/sql/connect/php/download-drivers-php-sql-server?view=sql-server-2017

اینطوری که من متوجه شدم و فقط تونستم بهش وصل شم این بود که این افزونه sqlsrv فقط روی ورژن 7 php کار میکنه ، یه نکته رو هم همین الان بگم که اگر Wamp64 بیت دارید بندازید آشغال یه مرگ بر آمریکا هم نثارش کنید =)) یدونه 32 بیت بندازید روی سیستم و تست کنید درایور PHP رو از آدرس بالا دومی دانلود کنید و نسخه مناسبش رو بریزید توی PHP فولدر ext بعدش باید pnp.ini رو ویرایش کنید بهتره هم نسخه توی همین فولدر رو ویرایش کنید و هم نسخه توی apachi/bin/php.ini رو ، دلیلشم اینه که با تغییر نسخه های php این فایل میاد با اون مرج و اینا میشه و دوبارکاری پیش میاره و این داستانا ، خلاصه اینکه هر چهارتا فایلی که کپی کردید رو باید اینجا ذکر کنید (بقیه مستندات و بلاگرها میگن که دوتا فایل ذکر کافیه ولی کار از محکم کاری ثوابش بیشتره =)) و اینکه دوتا صلوات مارو حاجت روا نکرد و اجبارا چارتا نفرین نثارش کردم ) مشکلی هم پیش نمیاد اگر اون فایل وجود نداشته باشه فقط دقت کنید که بهتره تمیز کار کنید وتوی قسمت مربوط به خودش لاین هارو اضافه کنید زیر بقیه extention ها یه سرچ بزنید pdo میتونید جاشو پیدا کنید برید ته تهش (بستگی به نسخه خودتون اسم فایل هارو بزنید و ممکنه برای نسخه های مختلف php اون .dll آخرش حتی نیاز نباشه)

extension=php_pdo_sqlsrv_71_nts_x86.dll extension=php_pdo_sqlsrv_71_ts_x86.dll extension=php_sqlsrv_71_nts_x86.dll extension=php_sqlsrv_71_ts_x86.dll

خب بعد از این موارد برید توی phpInfo بزنید pdo رو سرچ کنید ببینید توی PDo drivers بغل mysql, sqlite اومده اضافه شده یا نه ؟ اگه sqlsrv اضافه شده که مشخص میشه درایو ها با نسخه php و اینا سازگاری داره اگه نبودش برید اینقدر تست کنید و هی درایو بریزید نسخه 32 بیت Wamp که گفتم رو حتما دقت کنیدو اینا که دیگه ایشالا یجایی اضافه میشه براتون میاد

خب بریم سر داستان بعدی که این اصلا ممکنه با هیچکدوم از روش ها متصل نشه کافیه برید روی Sql Manager یه یوزر یا پسورد جدید تعریف کنید برای دیتابیس و اگر بازم جواب نداد برید به قسمت ODBC ویندوز و یه یوزر رو متصل کنید به دیتابیس یدونه test هم باهاش بزنید ساکسس رو که داد همون یوزر و پسورد رو بردارید ببرید توی PHP و خالاص ، آموزشش توی یوتیوب هست که لینک کردم تهش همینجا

<?php $serverName = "LAST-PC\MYSQLSERVER"; //serverName\instanceName $connectionInfo = array( "Database"=>"Sherince", "CharacterSet" => "UTF-8","UID"=>"last", "PWD"=>"12345"); $conn = sqlsrv_connect( $serverName, $connectionInfo); if( $conn ) { echo "Connection established.<br />"; }else{ echo "Connection could not be established.<br />"; die( print_r( sqlsrv_errors(), true)); } $result = sqlsrv_query( $conn, "SELECT * FROM [Sherince].[13981].[ActivityLog]"); while( $row = sqlsrv_fetch_array( $result, SQLSRV_FETCH_ASSOC) ) { var_dump($row); } sqlsrv_free_stmt($result); sqlsrv_close($conn); ?>

این لینک ها هم بد نیست حالشو ببرید

https://docs.microsoft.com/en-us/sql/integration-services/import-export-data/connect-to-an-odbc-data-source-sql-server-import-and-export-wizard?view=sql-server-2017 https://www.youtube.com/watch?v=zhG9f6Uya_E https://www.php.net/manual/en/function.odbc-connect.php

خب بعد از متد ها دوباره دارم این تاپیک رو ویرایش میکنم ! دلیلش هم اینه که برای نصب کردن کل این داستان روی یه سیستم دیگه به مشکل خوردم همچی درایورها به درستی اد شده Extention نمایش داده میشد اما نیاز به دانلود درایور بود که از این لینک دانلود میشه و بعد از نصب همچی کار میکنه

https://www.microsoft.com/en-us/download/confirmation.aspx?id=36434
phpsqlserverwamp
و خداوند مارا فوتبالیست آفرید (شما بخونید برنامه نویس :| )
شاید از این پست‌ها خوشتان بیاید