php使用pdo连mssql数据库的问题

monkeyhjl 2014-06-12 04:44:56
以前是用sqlsrv来连mssql数据库,没有问题,想把程序改为pdo来连接。使用pdo mssql 的方式也能连接,但是使用pdo sqlsrv连接不成功,提示错误: [08001][Microsoft][SQL Server Native Client 10.0]命名管道提供程序: 无法打开与 SQL Server 的连接 [53]。
我的php版本:PHP 5.2.6,使用的扩展为php_pdo_sqlsrv_52_ts.dll 和php_sqlsrv_52_ts.dll,php_pdo.dll扩展也打开了,phpinfo里扩展都显示正常。下面是测试连接程序代码:
<?php
try {
$hostname = "192.168.10.25";
$dbname = "test";
$username = "web";
$pwd = "123456";
$dsn="sqlsrv:Server=$hostname;database=$dbname";
//$dsn="mssql:host=$hostname;database=$dbname";
$conn = new PDO ($dsn,$username,$pwd);
$conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
echo "mssql database connnection sucessed!";
} catch (PDOException $e) {
echo "Failed to get DB handle: " . $e->getMessage() . "\n";
exit;
}
?>
大家帮我看看可能是什么原因?谢谢了!
...全文
2029 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
monkeyhjl 2014-06-18
  • 打赏
  • 举报
回复
结果是sqlsrv方式连接成功。 而且使用pdo mssql 的方式也能连接成功。
xuzuning 2014-06-13
  • 打赏
  • 举报
回复
结果呢?你没说 如果参数无误,分立函数练级没有问题,而 pdo 连接又问题 那就是 pdo 的问题了 你的是 PHP 5.2.6,但只有 PHP 5.3.6 及以后的 PDO 可以稳定工作
monkeyhjl 2014-06-13
  • 打赏
  • 举报
回复
引用 4 楼 xuzuning 的回复:
贴出你用 sqlser 函数时的连接代码
你说的是sqlsrv吧?现在我的程序都是这种方式连接mssql数据库的。下面是测试代码:
<?php
$hostname = "192.168.10.25";
$dbname = "test";
$username = "web";
$pwd = "123456";
$connectionInfo = array("UID"=>$username, "PWD"=>$pwd, "Database"=>$dbname);
$conn = sqlsrv_connect( $hostname, $connectionInfo);
if( $conn == false){
    echo "sqlsrv方式连接失败.";    
} else {
	echo "sqlsrv方式连接成功.";
}
?>
傲雪星枫 2014-06-12
  • 打赏
  • 举报
回复
看錯了,原來是來呢mssql。 看看這個能否解決http://blog.csdn.net/abandonship/article/details/7978904
xuzuning 2014-06-12
  • 打赏
  • 举报
回复
贴出你用 sqlser 函数时的连接代码
monkeyhjl 2014-06-12
  • 打赏
  • 举报
回复
端口号是必须的么?我看网上好多例子都没有写端口号。 我加了端口号也试了,这回错误跟原来略有不同。错误提示:[08001][Microsoft][SQL Server Native Client 10.0]SQL Server 网络接口: 连接字符串无效 [87]。 二楼的是连的mysql吧。
傲雪星枫 2014-06-12
  • 打赏
  • 举报
回复
需要端口號的么? 寫法不對了。

<?php
function connect($config=array()){
	$dbhost = $config['dbhost'];
	$dbname = $config['dbname'];
	$dbuser = $config['username'];
	$dbpasswd  = $config['password'];
	$pconnect = $config['pconnect'];
	$charset = isset($config['charset'])? $config['charset'] : '';

	$dsn  = "mysql:host=$dbhost;dbname=$dbname;";
	try {
		$h_param = array(
			PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
		);
		if($charset!=''){
			$h_param[PDO::MYSQL_ATTR_INIT_COMMAND] = 'SET NAMES '.$charset;	#設置默認編碼
		}
		if ($pconnect){
			$h_param[PDO::ATTR_PERSISTENT] = true;
		}
		$conn = new PDO($dsn, $dbuser, $dbpasswd, $h_param);
	} catch (PDOException $e) {
		throw new ErrorException('Unable to connect to db server. Error:'.$e->getMessage(), 31);
	}
	return $conn;
}

$confg = array(
	'dbhost' => 'localhost',
	'dbname' => 'dbname',
	'username' => 'admin',
	'password' => '123456',
	'pconnect' => 0,
	'charset' => ''
);

$dbh = connect($config);
?>
风.foxwho 2014-06-12
  • 打赏
  • 举报
回复
少了端口号,多百度或GOOGLE一下,百度上第一条就这个

$dsn = "sqlsrv:server=localhost,1433;Database=bbb";
try {
    $dbh = new PDO($dsn, 'sa', '123456'); //初始化一个PDO对象,就是创建了数据库连接对象$dbh  
} catch (PDOException $e) {
    die ("Error!: " . $e->getMessage() . "<br/>");
}
echo '<pre>';
print_r($dbh->query("select * from aaa where id=1")->fetchAll());
echo '</pre>';

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧