آموزش اتصال به SQL Server با php با استفاده از توابع کتابخانه ایی PDO

mamadshoshteri

New Member
سلام دوستان من چند وقت پیش به این آموزش خیلی نیاز پیدا کردم ولی راحت نبود واسم یاد گرفتنش واسه همین تصمیم گرفتم این چند تا کلمه که یاد گرفتم و اینجا به اشتراک بزارم شاید یکی مثل من نیاز پیدا کرد .


لازم است مراحل زیر قدم به قدم طی‌ شود:

۱-در روت در فلدرِ پی‌ اچ‌ پی‌ در php.ini ابتدا extension=PHP_PDO.dll از حالت کامنت خارج میشود . (بسته به نیازتون باید بقیه خط هایی که PDO دارن رو هم از کامن در بیارین مشخصه چه فایل هایی)

۲- ntwdblib.dll دانلود شده و در ۲ پوشهٔ php و apache->bin کپی‌ میشود

۳.در php.ini mssql.secure_connection = Off به mssql.secure_connection = On تبدیل میشود

4.در mssql configuration manager در sql server network config همه پروتکل ها جز VIA فعال شده و tcp/ip یک ip معادل 1443 ست میشود.

____________________

یه فایله پیوست کردم dll هایی که نیازه واسه PDO تا روی xp اجرا بشه توش هست اون فایل ها رو کنار بقیه dll هایی که تو پوشه php شاخه ی ext هست کپی کنید .

خب حالا یه بار service آپاچی تو رو ری استارت کنید .



کد زیر هم واسه اتصال به پایگاه داده هست
[PHPS]
<?php
try {
$hostname = "SERVER"; //host
$dbname = "SodoorFactor91"; //db name
$username = "sa"; // username like 'sa'
$pw = "560"; // password for the user

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

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

[PHPS]

function persian_sql_to_php($str){

if(mb_detect_encoding($str) == 'UTF-8' AND mb_check_encoding($str, 'UTF-8')){

$str = utf8_decode($str);

}

$str = iconv('Windows-1256', 'UTF-8', $str);

return $str;

}



function persian_php_to_sql($str){

$str = iconv('UTF-8', 'Windows-1256', $str);

return $str;

}
[/PHPS]

دوستان شرمنده اگه نکات نگارشی رو رعایت نکردم یا عامیانه نوشتم امیدوارم استاده برده بشه / یا علی
 

پیوست ها

  • SQLSRV20.zip
    748.8 کیلوبایت · بازدیدها: 321
آخرین ویرایش:

ghasemweb

New Member
من موفق نشدم متصل بشم لطفا راهنمایی کنید . مشکل از کجاست؟ 64 بیتی بودن ویندوز ممکنه ایراد کنه؟
 

mamadshoshteri

New Member
والله 64 بیتی بودنش رو امتحان نکردم

ورژن Xampp ت چیه ؟ به چه خطایی برخورد میکنی ؟
 

fatemeh3

New Member
سوال

سلام دوستان من چند وقت پیش به این آموزش خیلی نیاز پیدا کردم ولی راحت نبود واسم یاد گرفتنش واسه همین تصمیم گرفتم این چند تا کلمه که یاد گرفتم و اینجا به اشتراک بزارم شاید یکی مثل من نیاز پیدا کرد .


لازم است مراحل زیر قدم به قدم طی‌ شود:

۱-در روت در فلدرِ پی‌ اچ‌ پی‌ در php.ini ابتدا extension=PHP_PDO.dll از حالت کامنت خارج میشود . (بسته به نیازتون باید بقیه خط هایی که PDO دارن رو هم از کامن در بیارین مشخصه چه فایل هایی)

۲- ntwdblib.dll دانلود شده و در ۲ پوشهٔ php و apache->bin کپی‌ میشود

۳.در php.ini mssql.secure_connection = Off به mssql.secure_connection = On تبدیل میشود

4.در mssql configuration manager در sql server network config همه پروتکل ها جز VIA فعال شده و tcp/ip یک ip معادل 1443 ست میشود.

____________________

یه فایله پیوست کردم dll هایی که نیازه واسه PDO تا روی xp اجرا بشه توش هست اون فایل ها رو کنار بقیه dll هایی که تو پوشه php شاخه ی ext هست کپی کنید .

خب حالا یه بار service آپاچی تو رو ری استارت کنید .



کد زیر هم واسه اتصال به پایگاه داده هست
PHP Code:

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

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



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

PHP Code:


function persian_sql_to_php($str){

if(mb_detect_encoding($str) == 'UTF-8' AND mb_check_encoding($str, 'UTF-8')){

$str = utf8_decode($str);

}

$str = iconv('Windows-1256', 'UTF-8', $str);

return $str;

}



function persian_php_to_sql($str){

$str = iconv('UTF-8', 'Windows-1256', $str);

return $str;

}



دوستان شرمنده اگه نکات نگارشی رو رعایت نکردم یا عامیانه نوشتم امیدوارم استاده برده بشه / یا علی








سلام.من با xamp کد php می نویسم.متاسفانه من فایل php.ini رو که می فرمایین پیدا نمیکنم.که بخوام تغییراتی که شما گفتین رو انجام بدم!!!!!!!!
 

fatemeh3

New Member
سلام.من با xamp کد php می نویسم.متاسفانه من فایل php.ini رو که می فرمایین پیدا نمیکنم.که بخوام تغییراتی که شما گفتین رو انجام بدم!!!!!!!!
 

جدیدترین ارسال ها

بالا