关于PHP读取数据库编程,网上好多都是PHP5.3之前的版本mssql,5.3之后的版本使用mssqli,但是需要另外安装mssqli扩展,扩展资源很难找到,官网上也是sqlsrv扩展库,本文使用PHP7.2+SQLsever2014+Apache编程,读取数据表格显示。
数据库登录账户名和密码在SQLsever->安全性 中设置,本文设置为aaa,123456,本机名可在数据库登录界面查看。
在SQLsever中建立表格如图:
在web中查询结果如下:
关于查询数据的格式化可以采用table来管理,在此不做处理。
关于读取结果中文乱码问题在代码中已解决。
具体代码如下:
<?php
header("content-Type: text/html; charset=utf-8");
echo("进入测试!</br>");
if (function_exists("mssql_connect")){
echo 'PHP环境支持MSSQL!<br/>';
}else{
echo '环境不支持MSSQL数据库!</br>';
}
if (function_exists("sqlsrv_connect")){
echo 'PHP环境支持SQLSRV!<br/>';
}else{
echo '环境不支持SQLsrv数据库!<br/>';
}
$server_name = '你的本机名';
$connectionInfo = array( "Database"=>"你的数据库名", "UID"=>"aaa", "PWD"=>"123456");
$link = sqlsrv_connect( $server_name, $connectionInfo );
if (!$link) {
echo('连接数据库失败!</br>');
die(print_r(sqlsrv_errors(),true));
}
else
{
echo("连接到数据库 ");
}
$sql = "SELECT top 100 [UID]
,[MAJOR]
,[UNAME]
,[Password]
,[Alias]
,[Birth]
,[Sex]
,[Education]
,[Nota]
FROM [UserGroup].[dbo].[PersonGroup]";
$params = array();
$options = array( "Scrollable" => SQLSRV_CURSOR_KEYSET );
$stmt = sqlsrv_query( $link, $sql,$params,$options);//查找表
if( $stmt == false) //输出错误信息
{
echo('<br/>查找失败!</br>错误信息:');
die( print_r( sqlsrv_errors(), true) );
}
else
{
echo("<br/>进入SQLsever查询!<br/>");
$server_info = sqlsrv_server_info( $link);
if( $server_info )
{
foreach( $server_info as $key => $value)
{
echo $key.": ".$value."\n<tr/>";
}
}
else
{
echo "sever信息获取失败.\n<tr/>";
die( print_r( sqlsrv_errors(), true));
}
}
$row_count = sqlsrv_num_rows( $stmt );//计算查询结果的行数
if ($row_count === false)
echo "Error in retrieveing row count.";
else
echo("<br/>记录项");
echo($row_count);
/* 检索字段数. */
$numFields = sqlsrv_num_fields( $stmt );
echo("<br/>字段数");
echo($row_count);
echo("<br/>");
/*遍历结果集的每一行. */
echo("UID MAJOR UNAME Password Alias Birth Sex Education Nota <br/>");
while( sqlsrv_fetch( $stmt ))
{
echo("<br/>");
/* 遍历每行的字段。 */
for($i = 0; $i < $numFields; $i++)
{
$result = sqlsrv_get_field($stmt, $i,SQLSRV_PHPTYPE_STRING(SQLSRV_ENC_CHAR))." ";
$result = iconv('GB2312', 'UTF-8', $result);
echo($result);
//一个 SQLSRV 常量 (SQLSRV_PHPTYPE_*),可确定返回数据的 PHP 数据类型。
}
echo "\n<br/>";
}
sqlsrv_free_stmt($stmt);//释放资源
sqlsrv_close($link);//关闭资源
?>