php 连接sqlserver数据库(一)

一配置你的开发环境
1 更改php.ini 配置文件
   extension=php_mssql.dll
   前面的;号去掉
2 确定ext目录下是否有php_mssql.dll文件
3 复制ntwdblib.dll php_mssql.dll php.ini复制到windows/system32
二 连接sqlserver2000
   1 连接数据库
    $conn= mssql_connect("localhost,1433","sa","");//假设连接的服务器是本机 sqlserver端口号为1433
    2 选择要操纵的数据库
     mssql_select_db("pubs");
    3 执行sql语句 执行任意sql语句都可以用此方法

     $rs=mssql_query("sql语句");
     如果执行的是查询$rs保存的就是查询的结果
     如果执行的是非查询 执行成功true 执行失败false
    4 关闭数据库连接释放资源
       mssql_close($conn);

       注意调用函数时候可以在函数名前加@表示如果执行函数失败也不会报错

如果连接失败排错顺序
1 找不到mssql_connect函数
   Call to undefined function
   这php配置环境问题 确定php_mssql.dll文件是否存在
2 tcp 错误
在命令行运行利用netstat-an 命令查看端口号是否可用 不能用打对sqlserver2000安装sp3补丁
3 身份验证错误
   sqlserver服务器是否采用的混合身份验证,并且确定你使用的用户名与密码是否正确


三从结果集中提取数据
$rsi=mssql_fecth_array(结果集)
改函数每执行一次就读取一行数据 并且以数组的形式存储该行数据
如果没有数据改函数返回false

三 处理结果集中的数据

1 mssql_num_fields(结果集) 返回结集中表的列数
   mssql_num_rows(结果集) 返回结果集中表的行数
2 mssql_fetch_field(查询结果集, 指针位置) 读列名称 可用来取得结果集中表的列名称 返回一个表示列信息的对象。
使用语法:
                  
    如果没有指定指针位置数值,则系统预设取回目前指针位置的下一个未取得列名称
echo '读列名称<br>';
$frs=mssql_fetch_field($rs);//读第1列的列名称
echo $frs->name;
$frs=mssql_fetch_field($rs);//读第2列的列名称
echo $frs->name;
依次类推
也可以
$frs=mssql_fetch_field($rs,n);//读第n列的列名称
写一个循环读取全部列名称
echo '读完整列名称<br>';
for($i=0;$i<mssql_num_fields($rs);$i++)
{

$frs=mssql_fetch_field($rs,$i);
echo $frs->name."/t";
}
或者
while($frs=mssql_fetch_field($rs))
{
     echo $frs->name;
}
3 读行数据
3.1 mssql_result(结果集,行数,列数或列名称) 返回结果集合中某个值
echo '读完整行数量<br>';
for ($i=0;$i<mssql_num_rows($rs);$i++)
{
for ($j=0;$j<mssql_num_fields($rs);$j++)
{
  
   echo mssql_result($rs,$i,$j)."/t";
}
echo '<br>';

}
3.2 mssql_fetch_row函数会从查询结果处,取得目前指针所在位置的整笔完整资料,并储存为数组类型数值,执行完成后会把索引

指针移向下一笔资料。
语法格式:
mysql_fetch_row(查询结果集)                  

while($rows=mssql_fetch_row($rs))
{
foreach($rows as $s)
{
   echo "$s";
}
echo"<br>";
}
3.3 mssql_fetch_array(查询结果指针)
函数会从查询结果处,取得目前指针所在位置的整笔完整资料,并储存为数组类型数值,执行完成后会把索引指针移向下一笔资料


与mssql_fecth_row区别只是访问数组时候可以用列名称字符串访问,鉴于此特点以后我们经常用此方法从结果集中提取数据!
3.4移动指针
在前面我们提到过,当mysql_fetch_row函数执行后,会将目前资料指针下移一笔。而mysql_data_seek函数的功能,则是可将目前的

资料指针移动到任何一笔资料上。
语法格式:
mssql_data_seek(查询结果指针, 资料录位置)

四 php访问sqlserver存储过程
   选学
sql server存储过程
CREATE PROC ProcTest @id int, @name varchar(30)
output
as
select @name=username from users where
id=@id
select * from users

php实现代码:
<?php
    $userId = 2;    // test parameter
    $userName;      // test return value

    $conn = mssql_connect("localhost,1433", "sa", "") or die("Can't connect sql server");
    mssql_select_db("mm_db", $conn)
$stmt = mssql_init("ProcTest", $conn) //产生预处理目的执行存储过程
     mssql_bind($stmt, "@id", $userId, SQLINT4);
//为存储过程输入参数付值,注意必须付的值必须是变量
    mssql_bind($stmt, "@name", $userName, SQLVARCHAR, true);//捕获输出参数
//执行存储过程
    $rs = mssql_execute($stmt);
//向下移动游标以读取第一个查询结果的内容 mssql_next_result($rs);
   //读$rs中的数据
while($rsi=mssql_fetch_array($rs))
{
echo $rsi["job_id"];
}
//读取存储过程的返回值
echo $z;
?>


五 与数据库操作相关的字符串函数
1 php配置文件 对于magic_quotes_gpc=on 表单等传输数据是对于特殊的符号进行处理比如’转换成/’进行传输。off不处理。
2 addslashes返回字符串,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线。这些字符是单引号(')、双引号(")、反斜线(/)与 NUL(NULL 字符)等。
3 stripslashes将用addslashes()函数处理后的字符串返回原样。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值