php连接sql server数据库(sql数据库基础知识)
其实php连接sql server数据库的问题并不复杂,但是又很多的朋友都不太了解sql数据库基础知识,因此呢,今天小编就来为大家分享php连接sql server数据库的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!
怎样用PHP连接sql数据库
1、学习的方法,最好是看手册
在前一篇文章中涉及到了连接数据库sqlsrv_connect();还记得我们mysql连接数据库的时候也是mysql_connect();两者操作数据库是很相似的。从零基础开始学起的话,只能是查阅手册。查看一下sqlsrv有哪些函数提供我们使用!推荐网址是:
【注意】很多的方法都跟mysql提供的方法很相似,看到后面的函数名就大概知道里面的用法,比如说mysql执行sql语句的时候调用mysql_query();而sqlserver执行sql语句的时候调用也是sqlsrv_query(),但是特别注意一点就是,它们的传递参数不一样。详细的只能看一下手册。接下来我简单总结一下操作数据的方法
2、连接数据库sqlsrv_connect()
<?php$serverName="serverName\sqlexpress";//服务器的名字,本地localhost$connectionInfo= array("Database"=>"dbName","UID"=>"userName","PWD"=>"password");$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));
}
3、操作数据库
1)执行sql语句sqlsrv_query(),返回值为true或者false,这里函数的用法跟mysql_query(),不一样。它需要把连接的资源句柄当作参数传进去,看源码。资源句柄就是上面代码连接数据库的“$conn”。
$sql="select* from test1";//sql语句$data= sqlsrv_query($conn,$sql);//$conn资源句柄if($data== true){ die("执行成功");
}else{ die("执行失败");
}
2)获取结果集
//以数值索引数组、关联数组或这两种数组的形式检索下一行的数据。类似于mysql_fetch_arraysqlsrv_fetch_array
//以对象形式检索下一行的数据。sqlsrv_fetch_object 1234
$sql="select* from test1";$data= sqlsrv_query($conn,$sql);if($data== true){ while($row= sqlsrv_fetch_array($data, SQLSRV_FETCH_ASSOC)){ echo$row['id'].",".$row['name']."<br/>";
}else{ die( print_r( sqlsrv_errors(), true));
}
}
$sql="SELECT fName, lName FROM Table_1";$stmt= sqlsrv_query($conn,$sql);if($stmt=== false){ die( print_r( sqlsrv_errors(), true));
}while($obj= sqlsrv_fetch_object($stmt)){ echo$obj->fName.",".$obj->lName."<br/>";
}
3)显示错误信息sqlsrv_errors():上面都有用到这个函数,只要是操作数据库发生错误,都可以使用这个函数打印出来看一下压
这里就不用上代码了
怎么配置apache连接sqlserver
下载驱动程序,下载后安装释放程序,里面有以下文件:
php_pdo_sqlsrv_52_nts.dll
php_pdo_sqlsrv_52_ts.dll
php_pdo_sqlsrv_53_nts_vc6.dll
php_pdo_sqlsrv_53_nts_vc9.dll
php_pdo_sqlsrv_53_ts_vc6.dll
php_pdo_sqlsrv_53_ts_vc9.dll
php_sqlsrv_52_nts.dll
php_sqlsrv_52_ts.dll
php_sqlsrv_53_nts_vc6.dll
php_sqlsrv_53_nts_vc9.dll
php_sqlsrv_53_ts_vc6.dll
php_sqlsrv_53_ts_vc9.dll
SQLServerDriverForPHP.chm(手册,英文够好的话,可以看看,嘿嘿)
SQLServerDriverForPHP_License.rtf
SQLServerDriverForPHP_Readme.htm(自述文件)
?
关于VC6和VC9的区别
VC6版本是使用 Visual Studio 6编译器编译的,如果你是在windows下使用Apache+PHP的,请选择VC6版本。
VC9版本是使用 Visual Studio 2008编译器编译的,如果你是在windows下使用IIS+PHP的,请选择VC9版本。
?
开始配置
选择php_sqlsrv_53_ts.dll和php_pdo_sqlsrv_53_ts.dll。把文件拷贝到PHP文件夹下的ext目录下,然后在配置文件php.ini
的Extensions后面加上:
extension=php_sqlsrv_53_ts.dll
extension=php_pdo_sqlsrv_53_ts.dll
再重启Apache服务。
最后测试一下是否成功,在PHP中执行phpinfo()的查看sqlsrv、看图画红线处、如图所示这样就表示连接成功了!!
?
1.Windows Authentication连接
<?php
$serverName="(localhost)";
$connectionInfo= array("Database"=>"test","ConnectionPooling"=>false);
$conn= sqlsrv_connect($serverName,$connectionInfo);
if($conn== false)
{
echo"连接失败!";
die( print_r( sqlsrv_errors(), true));
}
?>
?
2.SQL Server Authentication连接
?
<?php
$serverName="localhost";//数据库服务器地址
$uid="sa";//数据库用户名
$pwd="123";//数据库密码
$connectionInfo= array("UID"=>$uid,"PWD"=>$pwd,"Database"=>"cart");
$conn= sqlsrv_connect($serverName,$connectionInfo);
if($conn== false)
{
echo"连接失败!";
die( print_r( sqlsrv_errors(), true));
}
//执行有结果集的SQL语句
$query= sqlsrv_query($conn,"select* from tb_goods");
while($row= sqlsrv_fetch_array($query))
{
echo$row[0]."-----".$row[1]."<br/>";
}
//执行增删改的SQL语句
?$rs=sqlsrv_query($conn,"update tb_goods set name='中国劲酒' where name='劲酒'");
?$num=sqlsrv_rows_affected($rs);//返回修改的行数
?if($num>0)
{
echo'修改成功!'.$num?;
}
else
{
echo'修改失败!';
}
?>
?
用于 SQL Server Driver for PHP的 API名称是 sqlsrv。所有 sqlsrv函数都以 sqlsrv_打头,
SQL Server Driver for PHP包含以下函数:
函数说明
sqlsrv_begin_transaction开始事务。
sqlsrv_cancel取消语句;并放弃相应语句的所有未决结果。
sqlsrv_client_info提供有关客户端的信息。
sqlsrv_close关闭连接。释放与相应连接关联的所有资源。
sqlsrv_commit提交事务。
sqlsrv_configure更改错误处理和日志记录配置。
sqlsrv_connect创建一个连接,并将其打开。
sqlsrv_errors返回关于上一操作的错误和/或警告信息。
sqlsrv_execute执行预定义语句。
sqlsrv_fetch使下一行的数据可供读取。
sqlsrv_fetch_array以数值索引数组、关联数组或这两种数组的形式检索下一行的数据。
sqlsrv_fetch_object以对象形式检索下一行的数据。
sqlsrv_field_metadata返回字段元数据。
sqlsrv_free_stmt关闭语句。释放与相应语句关联的所有资源。
sqlsrv_get_config返回指定配置设置的值。
sqlsrv_get_field按索引检索当前行中的字段。可以指定 PHP返回类型。
sqlsrv_has_rows检测结果集是否具有一行或多行。
sqlsrv_next_result使下一结果可供处理。
sqlsrv_num_rows报告结果集中的行数。
sqlsrv_num_fields检索活动结果集中的字段数。
sqlsrv_prepare准备 Transact-SQL查询,但不执行该查询。隐式绑定参数。
sqlsrv_query准备 Transact-SQL查询,并将其执行。
sqlsrv_rollback回滚事务。
sqlsrv_rows_affected返回有所修改的行的数目。
sqlsrv_send_stream_data在每次调用函数时向服务器发送最多八千字节(8 KB)的数据。
sqlsrv_server_info提供有关服务器的信息。
Linux下PHP 5.2.17测试成功
tar zxvf freetds-0.8.2.tar.gz
cd freetds-0.8.2/
./configure--enable-msdblib--prefix=/usr/local/freetds--with-tdsver=8.0
make&& make install
cd/home/lnmp0.9/php-5.2.17/ext/mssql/依个人可能不同
/usr/local/php/bin/phpize####php扩展信息
./configure--with-php-config=/usr/local/php/bin/php-config--with-mssql=/usr/local/freetds
make&& make install
vim/usr/local/php/etc/php.ini
在extension="pdo_mysql.so"下面添加
extension="mssql.so"
保存后,/root/lnmp restart即可
若搜索的结果有中文乱码则
vim/usr/local/freetds/etc/freetds.conf
[global]加上
client charset= utf8
$sql=mssql_connect('192.168.0.185','sa','1','1433');
mssql_select_db('test',$sql);
$result=mssql_query("select top 10* from test1")
while($row=mssql_fetch_assoc($result)){
print_r($rows);
}
freetds-0.8.2.tar.gz下载地址:
免费下载地址在
用户名与密码都是www.linuxidc.com
php连接远程数据库
在php中如果要连接远程数据库连接方法很简单,只要把本地连接localhost或127.0.0.1改成指定远程服务器一IP地址或者直接域名即可。
语法
mysql_connect(servername,username,password);
例子
在下面的例子中,我们在一个变量中($con)存放了在脚本中供稍后使用的连接。如果连接失败,将执行"die"部分:
代码如下:
<?php
$con=mysql_connect("localhost","peter","abc123");
if(!$con)
{
die('Couldnotconnect:'.mysql_error());
}
//somecode
?>
上面是连接本地数据库,下面把localhost改成远程IP即可了
实例代码如下:
$conn=mysql_connect(';);
if(!$conn)echo"失败!";
elseecho"成功!";
//从表中提取信息的sql语句
$sql="SELECT*FROMuserwhereuserName='$user_name'";
//执行sql查询
$result=mysql_db_query('info',$sql,$conn);
//获取查询结果
$row=mysql_fetch_row($result);
mysql_close();
好了,文章到这里就结束啦,如果本次分享的php连接sql server数据库和sql数据库基础知识问题对您有所帮助,还望关注下本站哦!