Bootstrap

php连接sqlserver sqlserver设置,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 '读列名称
';

$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 '读完整列名称
';

for($i=0;$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 '读完整行数量
';

for ($i=0;$i

{

for ($j=0;$j

{

echo mssql_result($rs,$i,$j)."/t";

}

echo '
';

}

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

指针移向下一笔资料。

语法格式:

mysql_fetch_row(查询结果集)

while($rows=mssql_fetch_row($rs))

{

foreach($rows as $s)

{

echo "$s";

}

echo"
";

}

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 whereid=@id

select * from users

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()函数处理后的字符串返回原样。

;