PDA

View Full Version : سوال: چه جوری میتونم از php به SQL Server وصل شد



salamesalehpour
جمعه 29 مهر 1390, 22:47 عصر
سلام دوستان

چه جوری میتونم از php به SQL Server وصل شد
به My SQL میتونم وصل شم ولی به SQL Server نه

لطفا کمکم کنین

Unique
جمعه 29 مهر 1390, 23:58 عصر
php از طریق Extension هاش میتونه به بیشتر پایگاه های داده وصل بشه شما با mysql میتونید به MySQL Database و با mssql به Microsoft SQL Server وصل بشین :

مثلا معادل mysql_connect برای MySQL باید از mssql_connect برای MS SQL استفاده کنید !


$link = mssql_connect('localhost', 'sa', '1234');

if (!$link) {
die('مشکلی در ارتباط با اتصال به پایگاه پیش آمده است');
}

برای اطلاعات بیشتر :
http://www.php.net/manual/en/ref.mssql.php

salamesalehpour
شنبه 30 مهر 1390, 09:27 صبح
دستتون درد نکنه ولی باز این خطا رو میده
Fatal error: Call to undefined function mssql_connect() in C:\xampp\htdocs\testPHP\index.php on line 12
خط 12 مربوط به دستور mssql_connect
راستی میشه توضیح بدید آرگومان های دستور mssql_connect دقیقا چیه
مرسی

Unique
شنبه 30 مهر 1390, 15:28 عصر
احتمال قوی ، مشکل شما اینه که php تون extension مربوط به mssql را فعال نداره ! برین توی php.ini و comment (منظور از comment کاراکتر ; هستش) خط زیر را بردارین :


extension=php_mssql.dll

اسکریپت زیر را آزمایش کنین تا مطمئن بشین mssql نصبه :


if (function_exists('mssql_connect')){
echo "Okay, fn is there<br>------------------<br>";
} else {
echo "Hmmm .. fn is not even there<br>------------------<br>";
}

if(extension_loaded("mssql")) {
echo "MSSQL is Loaded<br>";
}
else {
echo "MSSQL not loaded<br>";
}

if(extension_loaded("msql")) {
echo "MSQL is Loaded<br>";
}
else {
echo "MSQL not loaded<br>";
}
echo '<br><br>';

$ext = get_loaded_extensions();
if(in_array('mssql', $ext))
echo 'u have mssql installed<br><br>';
else
echo 'u do NOT have mssql installed<br><br>';

اما کلا من همیشه با mssql توی سیستم های مختلف هم روی apache و هم روی IIS مشکلاتی داشتم اما معمولا با چک کردن تنظیمات حل شده !

idocsidocs
شنبه 30 مهر 1390, 15:36 عصر
سلام دوستان

چه جوری میتونم از php به SQL Server وصل شد
به My SQL میتونم وصل شم ولی به SQL Server نه

لطفا کمکم کنین
یه راه ساده استفاده از PDO هست و راه دیگه استفاده از فریم ورکها هست.

من دارم روی کیک کار می کنم. دوتا از قابلیتهای خوبش اینه که می تونی از وب سرور و دیتابیسهای مختلفی استفاده کنید.

salamesalehpour
شنبه 30 مهر 1390, 15:56 عصر
حق با شما بود اون extension رو فعال نکرده بودم
ولی با فعال کردن اون هم درست نشد .
راه دیگه ای رو سراغ ندارید. اگه میدونید ممنون میشم با یه مثال بفرمایید

Unique
یک شنبه 01 آبان 1390, 00:51 صبح
خوب همونطور که گفتم خیلی ها به مشکل خوردند !

1 - شما حتما مطمئن بشو که php.ini ای که تغییر دادی همونی هست که php داره ازش استفاده میکنه ! میتونی با اجرای ()phpinfo ببینی ! ، مطمئن شو فایل php_mssql.dll حتما توی فولد extension های php موجود باشه و تابع بالایی من و phpinfo دارن نشون میدن که mssql واقعا Load شده !
2 - فقط یک کار دیگه میمونه ، من یک فایل attach کردم که یک dll هستش و باید حتما در دسترس php باشه ! توصیه میکنه 3 جا کپی بشه - توی system32 - توی فولدر php - توی فولدر extension های php !!!

باز هم ممکنه کار نکنه ! من بعضی وقت ها با reset کردن apache و IIS تونستم به نتیجه برسم !

اما اگه اینها نشده دو تا را ه حل دیگه میمونه !
یکی استفاده از odbc و یکی هم استفاده از pdo !
pdo قطعا جواب میده !
odbc هم 99% جواب میده !

نمیدونم ویندوز شما چیه اما اگه Windows Server یا Vista یا 7 هستش ! permission های فولدی که فایل dll را میگذاری یه چک بکن !
متاسفانه نمیشه در مورد windows یک حدس قطعی زد باید بهش ور بری تا بشه !

salamesalehpour
یک شنبه 01 آبان 1390, 18:22 عصر
میشه با یه مثال توضیح بدی
ممنون میشم دوست عزیز

Unique
دوشنبه 02 آبان 1390, 00:15 صبح
یه نمونه کد میتونه این باشه :


<?php
try {
$hostname = "host"; //host
$dbname = "dbname"; //db name
$username = "user"; // username like 'sa'
$pw = "pass"; // password for the user

$dbh = new PDO ("mssql:host=$hostname;dbname=$dbname","$username","$pw");
} catch (PDOException $e) {
echo "Failed to get DB handle: " . $e->getMessage() . "\n";
exit;
}
$stmt = $dbh->prepare("SELECT * FROM table");
$stmt->execute();
while ($row = $stmt->fetch()) {
print_r($row);
}
unset($dbh); unset($stmt);
?>

فقط مطمئن شو که extension مربوط به pdo توی php.ini فعال شده باشه ! یکبار هم سرویس دهندت را reset کن که pdo حتما لود شده باشه !
pdo اصلا مشکلات mssql را نداره !