旧PHP站点mssql扩展替换为sqlsrv的查询转换及输出问题
PHP mssql扩展替换为sqlsrv(PDO方案)问题解决
首先说明你最初直接用sqlsrv_connect加载缓慢的原因:参数传递错误,sqlsrv_connect第一个参数应为服务器地址,你误传为数据库名,同时connectionInfo数组里的Database配置值错写为host,才导致连接异常缓慢。
直接输出统计数值的解决方案
方案1:使用fetchColumn()(推荐,适配单值查询场景)
针对count(*)这类仅返回单个数值的查询,直接调用PDOStatement的fetchColumn()方法获取结果集第一行第一列的数值,无需循环遍历:
$query = 'SELECT count(*) FROM [Character]'; $count = $conn->query($query)->fetchColumn(); echo $count; // 直接输出统计值74
注:Character是SQL Server保留关键字,加上方括号包裹可以避免偶发的语法报错
方案2:给统计字段加别名后读取数组值
如果需要沿用关联数组读取的方式,给count(*)添加别名后直接读取对应键值即可:
$query = 'SELECT count(*) AS char_count FROM [Character]'; $stmt = $conn->query($query); $row = $stmt->fetch(PDO::FETCH_ASSOC); echo $row['char_count']; // 直接输出统计值74
如果不想修改SQL语句,也可以直接取关联数组的第一个元素:
$row = $stmt->fetch(PDO::FETCH_ASSOC); echo reset($row);
内容的提问来源于stack exchange,提问作者Andrius Petkevicius
相关产品推荐
相关产品推荐

