Как заставить mssql_connect работать с PHP7?

При портировании веб-приложения на сервер с использованием PHP7 я столкнулся с одной проблемой: я не могу заставить работать mssql_connect. Я узнал, что mssql еще не работает (или никогда не будет работать) на PHP7.

Какой самый быстрый способ подключиться к MSSQL с помощью PHP7 в Ubuntu (Nginx, php-fpm)?


person Paul    schedule 13.01.2016    source источник
comment
Как насчет подключения PDO?   -  person Matteo Tassinari    schedule 15.01.2016
comment
Из руководства по php: эта функция была УДАЛЕНА в PHP 7.0. 0. Альтернативы этой функции включают: PDO::__construct() sqlsrv_connect() odbc_connect()   -  person Ferrybig    schedule 15.01.2016
comment
Кто-нибудь подтвердил вышеуказанное решение?   -  person George Mastro    schedule 22.01.2016
comment
У меня такая же дилемма. PDO не работает должным образом с Stored Proc. Я предпочитаю PDO. Хотите перейти на php 7, но это большая проблема. Думаю, мне придется попытаться заставить dblib работать с хранимыми процедурами.   -  person Daryl B    schedule 26.05.2016
comment
может быть, вы скажете мне в RTCA [прочитайте комментарий выше]; но кто-нибудь понял, как сохранить PHP7.0 и использовать старый код с mssql_connect, mssql_query и mssql_fetch_array?   -  person dcparham    schedule 07.08.2018


Ответы (2)


Функция соединения больше не mssql_connect(). Начиная с php 5.3 он устарел. Теперь на php 7 эта старая функция исчезает. Но не волнуйтесь ;) В настоящее время вы можете использовать sqlsrv_connect() функция вместо этого.

Имейте в виду, что в новом методе вам нужно правильно настроить параметры. Есть некоторые отличия. Вот небольшой пример.

<?php
$serverName = "serverName\sqlexpress, 1542"; //serverName\instanceName, portNumber (1433 by default)
$connectionInfo = array( "Database"=>"dbName", "UID"=>"userName", "PWD"=>"password");
$conn = sqlsrv_connect( $serverName, $connectionInfo);

if( $conn ) {
     echo "Successfuly connected.<br />";
}else{
     echo "Connection error.<br />";
     die( print_r( sqlsrv_errors(), true));
}
?>

Может быть, этот ответ пришел немного поздно для вас, но я надеюсь, что это не слишком поздно для кого-то.

person Jorgeska    schedule 01.03.2017
comment
Почему sqlsrv_connect? Почему не pdo или mysqli? - person Michal; 01.03.2017
comment
sqlsrv_connect предназначен только для Windows. Он спросил о MSSQL с использованием PHP7 в Ubuntu (Nginx, php-fpm) - person Digital Human; 12.02.2018
comment
sqlsrv_connect в настоящее время работает у меня на этом — Ubuntu 16.04.1 с версией PHP 7.0.30-0, установлен freeTDS. и установлен msSQL ODBC sqlsrv. Версия SQL-сервера — Microsoft SQL Server 2008 R2 (окончательная первоначальная версия) — 10.50.1600.1 (X64). - person dcparham; 07.08.2018

1.sudo apt-get update установить php-sybase

2.

$dsn= 'dblib:host=youIP:1433;dbname=XXX;';
$dbusername="sa";
$dbpassword="XXXX";
try
{
    $mspdo = new PDO($dsn,$dbusername,$dbpassword);
    $mspdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $pe)
{
    die("database connect error:". $pe->getMessage());
}
person 范志強    schedule 29.04.2016
comment
В PHP7 нет поддержки sybase - person Digital Human; 12.02.2018